给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母。
这个题有个很明显的特征,是两个字符串有很多相同的字符,我们马上想到^按位异或来算,0^‘a’^‘b’^‘c’^‘d’^‘a’^‘b’^‘c’^‘d’^‘e’='e',
class Solution {
public char findTheDifference(String s, String t) {
// List<Character> list=new ArrayList<Character>();
// for(int i=0;i<s.length();i++){
// list.add(s.charAt(i));
// }
// for(int j=0;j<t.length();j++){
// if(!list.contains(t.charAt(j)))
// return t.charAt(j);
// }
// return '0';
// int []c =new int[26];
// for(int i=0;i<t.length();i++){
// c[t.charAt(i)-'a']++;
// }
// for(int j=0;j<s.length();j++){
// c[s.charAt(j)-'a']--;
// }
// for(int j=0;j<t.length();j++){
// if(c[t.charAt(j)-'a']==1) return t.charAt(j);
// }
// return '0';
//这个题用按位异或来做,两个都为1,则为0,不同则为1,所以相同的数按位异或肯定是0,
char c=0;
for(int i=0;i<s.length();i++)
{
c^=s.charAt(i);
}
for(int i=0;i<t.length();i++){
c^=t.charAt(i);
}
return c;
}
}