题目描述:
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母。
算法1:
行排序,然后遍历比较每个字符
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])
continue;
else
return t[i];
}
return t[t.size()-1];
}
};
算法2:
- 运用位运算,两个同样的值异或的结果为 0。
- 对两个字符串中的所有字符进行异或,得到的结果就是被添加的字符。
class Solution {
public:
char findTheDifference(string s, string t) {
char a = 0;
for(int i = 0; i<s.size(); i++)
{
a ^= s[i];
}
for(int j = 0; j<t.size(); j++)
{
a ^= t[j];
}
return a;
}
};