Leetcode题解之 —— 找不同

思路


思路一(100ms)

哈希计数法

  • 遍历参数二, 更新其map中的数量
  • 遍历参数一, map中不存在则直接return, 反之更新数量
  • 遍历map, 返回value1的键.

思路二(88ms)

差值法

  • 分别计算两者的charCodeAt总和
  • 计算两者的差
  • 返回该对应的字符

题解


  • 解法一
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
var findTheDifference = function(s, t) {
const cache = new Map();

for (const ch of t) {
cache.set(ch, cache.get(ch) ? cache.get(ch) + 1 : 1);
}
for (const ch of s) {
if (!cache.has(ch)) {
return ch;
}
else {
cache.set(ch, cache.get(ch) - 1 < 0 ? 0 : cache.get(ch) - 1);
}
}

for (const [v, i] of cache.entries()) {
if(i !== 0) {
return v;
}
}
};
  • 解法二
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
function computeStringSum(str) {
let amount = 0;

for (const ch of str) {
amount += ch.charCodeAt();
}

return amount;
}
var findTheDifference = function(s, t) {
const sumOfS = computeStringSum(s);
const sumOfT = computeStringSum(t);

return String.fromCharCode(sumOfT - sumOfS);
};