題目來源
兩個(gè)字符串昔榴,只有一個(gè)字符的差別辛藻,不過順序有點(diǎn)亂,讓你找出那個(gè)字符论泛,我想到的是用哈希揩尸,記錄下各有多少個(gè)字符,比較一下屁奏,需要遍歷兩個(gè)字符串各一次岩榆,遍歷長(zhǎng)度26的數(shù)組一次,感覺應(yīng)該夠好了吧坟瓢。
代碼如下:
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';
}
};
然后看了討論區(qū)勇边,果然又被打臉了。
直接看代碼吧折联。
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;
}
};