leetcode 389 找不同

2019-10-15  本文已影响0人  0error_

给定两个字符串 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;
    }
}


上一篇 下一篇

猜你喜欢

热点阅读