MAP的用法:
389找不同
给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd" t = "abcde"
输出:e
解释:
'e' 是那个被添加的字母。
复制代码
leetcode-cn.com/problems/fi…
用map存放s的各个字符的频率,然后遍历t的时候逐一减去,直到遇到减为0或者不存在的键就输出。
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
let findTheDifference = function(s, t) {
let map = {};
for(let i = 0; i < s.length; i++){
map[s[i]] = !map[s[i]] ? 1 : map[s[i]] + 1 ;
}
for(let j = 0; j < t.length; j++){
if(!map[t[j]] || map[t[j]] ===0)
return t[j];
map[t[j]]--;
}
};
复制代码
解题思路2
位运算,把两个字符串看成一个字符串,问题就转化成在一个字符串找出现奇数次的字符(s和t中的字符只有一个不一样),所以采用异或方法(同为0异为1),异或所有字符字符之后结果就是那个不同的字符。
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
let findTheDifference = function(s, t) {
let res = t[0];
for(let i = 0; i < s.length; i++){
res = res ^ s[i];
}
for(let j = 1; j < t.length; j++){
res = res ^ t[j];
}
return res;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)