给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd"
t = "abcde"
输出:
e
解释:
'e' 是那个被添加的字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-difference
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
自己用HashMap写了一个
class Solution {
public char findTheDifference(String s, String t) {
Map<Character,Integer> sMap = new HashMap<>();
Map<Character,Integer> tMap = new HashMap<>();
for (char ss:s.toCharArray()){
sMap.put(ss,sMap.getOrDefault(ss,0)+1);
}
for(char tt:t.toCharArray()){
tMap.put(tt,tMap.getOrDefault(tt,0)+1);
}
for(char c: tMap.keySet()){
if (sMap.getOrDefault(c,0)!= tMap.get(c)) return c;
}
throw null;
}
}
看到有一个人的思路很好
image.png用java实现了一下:
class Solution {
public char findTheDifference(String s, String t) {
int nums=0, numt=0;
for (char ss:s.toCharArray()){
nums+=ss;
}
for (char tt:t.toCharArray()){
numt+=tt;
}
char c = (char)(numt-nums);
return c;
}
}
网友评论