利用数组哈希表实现</span>
//字符串str1,字符串str2,str1的长度n1,str2的长度n2,res1存储相同字符,res2存储不同字符
void charcmp(char* str1,char *str2,int n1,int n2,char* res1,char* res2)
{
int a1[60]={0};//利用哈希数组记录str1相应字符出现的次数,共有52个大小写字母,ascii字母表中字母中间夹杂了6个其他符号
int a2[60]={0};//利用哈希数组记录str2相应字符出现的次数,共有52个大小写字母,ascii字母表中字母中间夹杂了6个其他符号
for (int i=0;i<n1;i++)
{
a1[str1[i]-'A']++;//A的次数用str[0]记录
}
for (int i=0;i<n2;i++)
{
a2[str2[i]-'A']++;
}
int k=0;
int m1=0;
int m2=0;
for (;k<60;k++)
{
if (a1[k]!=0||a2[k]!=0)
{
if (a1[k]!=0&&a2[k]!=0)//两个字符串里面都出现的字母
{
res1[m1++]=k+'A';//数字转化为字符,K=0存储的是A次数,对应的是字符A
}
else//只有一个字符串里面出现的字符
{
res2[m2++]=k+'A';
}
}
}
res1[m1]='\0';//添加结束符
res2[m2]='\0';//添加结束符
}
int main()
{
char str1[]="abcd";
char str2[]="fagh";
char res1[5]={'\0'};
char res2[10]={'\0'};
charcmp(str1,str2,4,4,res1,res2);
getchar();
return 1;
}