题目描述
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd"
t = "abcde"
输出:
e
解释:
'e' 是那个被添加的字母。
问题分析
- 思路一:
对两个数组中各个字符出现的次数进行对比,出现次数不同的那个就是多的那个。
- 思路二:
异或法。
举例子:
a ^ a ^ b = b,剩下的就是多出来那个,因为没多出来的都出现两次。
代码
思路一:
比起 异或法 太繁琐了,省略吧。。
思路二:
class Solution {
public char findTheDifference(String s, String t) {
char ans = 0;
for (char c : s.toCharArray()) ans ^= c;
for (char c : t.toCharArray()) ans ^= c;
return ans;
}
}