LeetCode 389. 找不同

114 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

389. 找不同

给定两个字符串 st ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

示例 1:

输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。

示例 2:

输入:s = "", t = "y"
输出:"y"

提示:

  • 0 <= s.length <= 1000
  • t.length == s.length + 1
  • s 和 t 只包含小写字母

二、思路分析:

哈希表解法: 1.遍历t字符串,将字母都转换为键值对形式 2.遍历s字符串,若在对象中存在,值-1 3.最后值不为0的就是添加的字符,循环查找值不为0的字母返回

三、AC 代码:

var findTheDifference = function(s, t) {
    var map = {}
    for(var i=0;i<t.length;i++) {
        map[t[i]] = (map[t[i]] || 0) + 1 
    }
    for(var j=0;j<s.length;j++) {
        map[s[j]] = map[s[j]] - 1
    }
    
    for(var n=0;n<t.length;n++) {
        if(map[t[n]] === 1) {
            return t.charAt(n)
        }
    }
};

四、总结:

这不得不提位运算

异或满足两条定律:

  1. a^b = b^a
  2. a^a=0
  3. a^0=a;

范文参考:、

来看姨(1)句话找不同!reduce 搞起来 💪 - 找不同 - 力扣(LeetCode) (leetcode-cn.com)

画解算法:389. 找不同 - 找不同 - 力扣(LeetCode) (leetcode-cn.com)