Problem:
给两个字符串s, t。t是由s打乱顺序后在随机一个位置加了一个字符构成,所有字符均为小写,求这个字符是什么?
Solution:
1. 将t字符串和s字符串异或,最后留下的就是那个不同的字符。
2. 将两个字符串排序后,输出相同位置不同字符的那个字符即可。
notes:
1. foreach的用法:
for(type name : array)
//Solution1
class Solution {
public:
char findTheDifference(string s, string t) {
char x = 0;
for(char c : s+t)
x ^= c;
return x;
}
};
//Solution2
class Solution {
public:
char findTheDifference(string s, string t) {
sort(s.begin(), s.end());
sort(t.begin(), t.end());
for(int i = 0; i < s.size(); i++) {
if(s[i] != t[i])
return t[i];
}
return t[t.size()-1];
}
};