找不同
难度:简单
这道题比较简单,有两种方法求解:
第一种:利用一维数组计数,长的字符串遍历 +1,短的字符串遍历 -1,最后取出数组中值为1的下标,转成char类型返回。
代码如下:
public boolean canConstruct(String ransomNote, String magazine) {
int[] num = new int[128];
for (int i = 0; i < t.length(); i++) {
num[t.charAt(i)]++;
}
for (int i = 0; i < s.length(); i++) {
num[s.charAt(i)]--;
}
for (int i = 0; i < num.length; i++) {
if (num[i]==1){
return (char)i;
}
}
return 0;
}
执行结果:通过
第二种:通过异或去求解,异或两个字符串中所有的字符,最后得到的就是只出现一次的字符,转成char返回即可
代码如下:
public static char findTheDifference(String s, String t) {
int num = 0;
for (int i = 0; i < s.length(); i++) {
num = num ^ s.charAt(i) ^ t.charAt(i);
}
num = num ^ t.charAt(t.length()-1);
return (char) num;
}
执行结果:通过
ps:异或的效率要更 高