【LeetCode】389. 找不同

给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。

思路:
1、创建数组对第一个字符串计数,对第二个字符串减数

class Solution {
        public char findTheDifference(String s, String t) {
            int counter[] = new int[26];
            for (char c:s.toCharArray()){
                counter[c-'a']++;
            }
            for(char c:t.toCharArray()){
                if(--counter[c-'a']<0){
                    return c;
                }
            }
            return 0;
        }
    }

参考:
链接:https://leetcode-cn.com/problems/find-the-difference/solution/yi-ju-hua-zhao-bu-tong-reduce-gao-qi-lai-eqok/

思路:使用异或^
相关的式子:p^p=0 p^0=p p^p=0
也就是说把s和t所有的字符异或起来剩下的就是多出来的字符

class Solution {
    public char findTheDifference(String s, String t) {
        char res = 0;
        for (char c: s.toCharArray()) {
            res ^= c;
        }
        for (char c: t.toCharArray()) {
            res ^= c;
        }
        return res;
    }
}
上一篇:Java中toCharArray()方法


下一篇:LeetCode—找不同(排序+数组+位运算+求和运算)