题目来源
两个字符串,只有一个字符的差别,不过顺序有点乱,让你找出那个字符,我想到的是用哈希,记录下各有多少个字符,比较一下,需要遍历两个字符串各一次,遍历长度26的数组一次,感觉应该够好了吧。
代码如下:
class Solution {
public:
char findTheDifference(string s, string t) {
int map1[26] = {0}, map2[26] = {0};
auto n1 = s.size();
for (auto i=0; i<n1; i++) {
map1[s[i]-'a']++;
map2[t[i]-'a']++;
}
map2[t[n1]-'a']++;
for (int i=0; i<26; i++)
if (map1[i] != map2[i])
return char('a'+i);
return 'a';
}
};
然后看了讨论区,果然又被打脸了。
直接看代码吧。
class Solution {
public:
char findTheDifference(string s, string t) {
auto n1 = s.size();
char res = t[n1];
for (auto i=0; i<n1; i++) {
res ^= s[i];
res ^= t[i];
}
return res;
}
};