您的位置:首页 > Web前端

[LeetCode]--389. Find the Difference

2016-10-17 11:32 393 查看
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.

用数组记录字符的老办法。

public char findTheDifference(String s, String t) {
int[] count = new int[248];
for (int i = 0; i < s.length(); i++)
count[s.charAt(i) - 'a']++;
for (int i = 0; i < t.length(); i++) {
count[t.charAt(i) - 'a']--;
if (count[t.charAt(i) - 'a'] < 0)
return t.charAt(i);
}
return ' ';
}


用两个map记录字符及字符出现的次数。

public char findTheDifference(String s, String t) {
Map<Character, Integer> sMap = new HashMap<Character, Integer>();
Map<Character, Integer> tMap = new HashMap<Character, Integer>();
for (int i = 0; i < t.length(); i++) {
if (i < s.length())
if (!sMap.containsKey(s.charAt(i)))
sMap.put(s.charAt(i), 1);
elsesMap.put(s.charAt(i), sMap.get(s.charAt(i)) + 1);

if (!tMap.containsKey(t.charAt(i)))
tMap.put(t.charAt(i), 1);
elsetMap.put(t.charAt(i), tMap.get(t.charAt(i)) + 1);
}
for (Character c : tMap.keySet()) {
if (!sMap.containsKey(c))
return c;
if (sMap.containsKey(c) && tMap.get(c) > sMap.get(c))
return c;
}
return ' ';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息