题目389(简单):
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例 1:
输入:s = “abcd”, t = “abcde”
输出:“e”
解释:‘e’ 是那个被添加的字母。
示例 2:
输入:s = “”, t = “y”
输出:“y”
示例 3:
输入:s = “a”, t = “aa”
输出:“a”
示例 4:
输入:s = “ae”, t = “aea”
输出:"a
法1:
class Solution {
public char findTheDifference(String s, String t) {
//将s中所有出现字母的次数加1,t出现的字母次数减1,最后为负数的则是最后的结果
int ch[]=new int[26];
for(int i=0;i<s.length();i++){
ch[s.charAt(i)-'a']++;
}
for(int j=0;j<t.length();j++){
ch[t.charAt(j)-'a']--;
if((ch[t.charAt(j)-'a'])<0){
return (char)(t.charAt(j));
}
}
return ' ';
}
}
法2:
class Solution {
public char findTheDifference(String s, String t) {
//求它们的ascii的和,相减就是加入的
int sumS=0,sumT=0;
for(int i=0;i<s.length();i++){
sumS+=s.charAt(i);
}
for(int j=0;j<t.length();j++){
sumT+=t.charAt(j);
}
return (char)(sumT-sumS);
}
}
法3:
class Solution {
public char findTheDifference(String s, String t) {
//使用位运算符^
int ch=0;
for(int i=0;i<s.length();i++){
ch ^=s.charAt(i);
}
for(int i=0;i<t.length();i++){
ch ^=t.charAt(i);
}
return (char)ch;
}
}