Leetcode389. 找不同c++实现
题目描述
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = “abcd”
t = “abcde”
输出:
e
解释:
‘e’ 是那个被添加的字母。
代码实现
分析:1.数学运算异或符合交换律,2.一个数与自身异或结果为0,与0 异或结果为自身。
因此,我们知道,s和t中所有的字母异或的结果为多出来的那个数。
class Solution {
public:
char findTheDifference(string s, string t) {
char ans = ' ';
int lens = s.size();
int lent = lens + 1;
for(int i = 0; i < s.size(); i++)
{
ans = ans ^ s[i];
ans = ans ^ t[i];
}
return ans ^ t[lent-1] - 32;
}
};