版权声明:中华人民共和国持有版权 https://blog.csdn.net/Fly_Fly_Zhang/article/details/84997690
题目:
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = “abcd”
t = “abcde”
输出:
e
解释:
‘e’ 是那个被添加的字母。
思路:好多人被是char类型束缚了,用的是两个字符串排序在进行比较的方法,其实char 也是由二进制组成的,在两个字符串当中,只有一个元素是一个,别的元素都是两两相同,我们可以用异或,两个相同的基本数据类型异或结果为0;这样两个字符串异或,最后剩下的就是那个被添加的元素了;
class Solution {
public char findTheDifference(String s, String t) {
if(s.length()==0&&t.length()!=0){ //判断是不是空串
return t.charAt(0);
}
char ch=s.charAt(0);
int i=1;
int j=0;
while(i<s.length()||j<t.length()){
if(i<s.length()){
ch^=s.charAt(i);
i++;
}
if(j<t.length()){
ch^=t.charAt(j);
j++;
}
}
return ch;
}
}