[LeetCode]--389. Find the Difference

来源:互联网 发布:冥府之路 知乎 编辑:程序博客网 时间:2024/04/29 11:12

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);                else                    sMap.put(s.charAt(i), sMap.get(s.charAt(i)) + 1);            if (!tMap.containsKey(t.charAt(i)))                tMap.put(t.charAt(i), 1);            else                tMap.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 ' ';    }
0 0
原创粉丝点击