如果给定两个字符串s和t,它们只包含小写字母,其中,字符串t由字符串s重新排序然后再随机的位置添加一个字母。设计一个算法找出t中被添加的字母。
例如:
输入:s = "a,b,c,d",t="c,b,a,a,d"
输出:"a"
思路:可以结合交换律进行位运算处理,x异或x为0(x^x=0),从而将s,t中重复的元素去除,将找出t中重新添加的字母
char findTheDifference(char * s, char * t){
int len1=strlen(s); //得出字符串s的长度,,t的长度在此基础上加1
int ans=0,i=0,j=0;
while(i<len1){ //遍历s并进行按位异或chuli
ans^=s[i++];
}
while(j<len1+1){ //遍历t并进行按位异或处理
ans^=t[j++];
}
return (char)ans; //返回字符
}
(a^b)^c=a^(b^c)