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:
eExplanation:
‘e’ is the letter that was added.
给一个字符串s和t,字符串t是字符串s将中字符随机打乱之后并且在随机位置随机添加一个字符组成的。而且字符只有小写,需要我们找出随机添加的那个字符。
可以利用hash表,首先统计字符串s各个字符出现的次数,然后再次遍历字符串t,与hash表中的做比较,如果某个字符在hash表中出现的次数为,则说明这个就是后来添加的那个字符。
class Solution {
public:
char findTheDifference(string s, string t) {
char ans;
unordered_map<char,int> chCount;
for(char ch : s) {
chCount[ch]++;
}
for(char ch : t) {
if(chCount[ch]-- == 0) {
ans = ch;
break;
}
}
return ans;
}
};
也可以利用异或。
class Solution {
public:
char findTheDifference(string s, string t) {
char ans = 0;
for(char c : s) ans ^= c;
for(char c : t) ans ^= c;
return ans;
}
};