Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
给定两个字符串
s和t,它们只包含小写字母。字符串
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)
}
}
};
四、总结:
这不得不提位运算
异或满足两条定律:
- a^b = b^a
- a^a=0
- a^0=a;
范文参考:、
来看姨(1)句话找不同!reduce 搞起来 💪 - 找不同 - 力扣(LeetCode) (leetcode-cn.com)