给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd"
t = "abcde"
输出:
e
解释:
'e' 是那个被添加的字母。
思路:
首先将两个字符串转为字符数组
然后对两个数组的每个字符进行异或操作
异或:
a^a = 0;
a^0 = a;
class Solution {
public char findTheDifference(String s, String t) {
char tmp = 0x00;
//将字符串转为数组
char[] data1 = s.toCharArray();
char[] data2 = t.toCharArray();
//因为两个字符串中只有一个字符不同,所以可以通过异或的方式得到
//两个相同的数异或为0
for(int i=0; i<data1.length; i++){
//字符异或会先转为ASCII码,所以异或后得强转为char型
tmp = (char)(tmp ^ data1[i]);
}
for(int j=0; j<data2.length; j++){
tmp = (char)(tmp ^ data2[j]);
}
return tmp;
}
}
本文介绍了一种通过异或操作找出在字符串t中相对于字符串s被添加的额外字母的方法。该方法利用了异或的性质,即相同字符异或结果为0,不同字符异或保留其值,从而高效地找到了新增的字符。
366

被折叠的 条评论
为什么被折叠?



