给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
思路:
1、创建数组对第一个字符串计数,对第二个字符串减数
class Solution {
public char findTheDifference(String s, String t) {
int counter[] = new int[26];
for (char c:s.toCharArray()){
counter[c-'a']++;
}
for(char c:t.toCharArray()){
if(--counter[c-'a']<0){
return c;
}
}
return 0;
}
}
参考:
链接:https://leetcode-cn.com/problems/find-the-difference/solution/yi-ju-hua-zhao-bu-tong-reduce-gao-qi-lai-eqok/思路:使用异或^
相关的式子:p^p=0 p^0=p p^p=0
也就是说把s和t所有的字符异或起来剩下的就是多出来的字符
class Solution {
public char findTheDifference(String s, String t) {
char res = 0;
for (char c: s.toCharArray()) {
res ^= c;
}
for (char c: t.toCharArray()) {
res ^= c;
}
return res;
}
}