Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input:
s = “abcd”
t = “abcde”
Output:
e
Explanation:
‘e’ is the letter that was added.
方法1:哈希
class Solution {
public:
char findTheDifference(string s, string t) {
vector<int> vt(26,0),st(26,0);
for(int i = 0;i < s.size() ; ++i){
++vt[s[i]-'a'];
--vt[t[i]-'a'];
}
--vt[t[t.size()-1]-'a'];
char res;
for(int i = 0; i < 26; ++i){
if(vt[i]!=st[i]){
res = static_cast<char>(i)+'a';
break;
}
}
return res;
}
};
方法2:异或
class Solution {
public:
char findTheDifference(string s, string t) {
char res = '\0';
for(auto& ch : s)
res^=ch;
for(auto& ch:t)
res^=ch;
return res;
}
};