Description:
Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input:
s = "abcd"
t = "abcde"
Output:
e
Explanation:
'e' is the letter that was added.
题意:给定两个字符串s和t,其中字符串t是由s中的所有字符随机组合后再添加一个随机字符再任意位置形成的,现在要求找出字符串t中添加的这个随机字符;
解法:由题意我们知道字符串s和t仅仅相差了一个字符,因此我们可以用哈希表分别存储字符串s和t中每个字符出现的次数,之后我们遍历字符串t中的所有键(即t中的不同字符),找出与字符串s中相应字符次数不相同的那个,就是随机添加的字符;
Java
class Solution {
public char findTheDifference(String s, String t) {
Map<Character, Integer> cntS = new HashMap<>();
Map<Character, Integer> cntT = new HashMap<>();
char result = ' ';
for (int i = 0; i < t.length(); i++) {
if (i < s.length()) {
cntS.put(s.charAt(i), cntS.getOrDefault(s.charAt(i), 0) + 1);
}
cntT.put(t.charAt(i), cntT.getOrDefault(t.charAt(i), 0) + 1);
}
for (Character key : cntT.keySet()) {
if (cntT.get(key) != cntS.getOrDefault(key, 0)) {
result = key;
break;
}
}
return result;
}
}