🌗 389. 找不同

吞佛童子2022年10月10日
  • algorithm
  • String
  • 位运算
小于 1 分钟

🌗 389. 找不同

难度: 🌗

问题描述

img_15.png


解法 1 - 借助 map

class Solution {
    public char findTheDifference(String s, String t) {
        // 思路:
        // 借助 arr
        int[] arr = new int[26];
        int len = s.length();
        for(int i = 0; i < len; i ++) {
            char c = s.charAt(i);
            int index = c - 'a';
            arr[index] ++;
        }
        len ++;
        for(int i = 0; i < len; i ++) {
            char c = t.charAt(i);
            int index = c - 'a';
            if(arr[index] == 0) {
                return c;
            } 
            arr[index] --;
        }
        return ' ';
    }
}

输出 1

img_14.png


解法 2 - 位运算

class Solution {
    public char findTheDifference(String s, String t) {
        // 思路:
        // 将 2 个字符串所有字符合在一起,也就是找 只出现一次的字符,其余字符全部出现了 2 次
        // 位运算
        int res = 0;
        for(int i = 0; i < s.length(); i ++) {
            res ^= s.charAt(i);
        }
        for(int i = 0; i < t.length(); i ++) {
            res ^= t.charAt(i);
        }
        return (char)res;
    }
}

输出 2

img_16.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou