题目

给定两个字符串 st ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

简单解法

使用异或,这道题就相当于求某个出现奇数次的数一样,对于两个字符串,只有哪个被添加的字母多出一个,其它字母都出现了偶数次,所以可以使用异或。

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
char findTheDifference(string s, string t) {
int ss = 0;
for(int i=0;i<s.size();i++)
{
ss ^= s[i] ^ t[i];
}
ss ^= t[t.size()-1];
return ss;
}
};

总结

对于类似的题求某个奇数或者偶数,以及一些可以转变为类似的题型都可以使用异或的方法来解答