leetcode 389题 [easy]
中:找不同
英:Find The Difference
题解1
1. 思路:ASCII,求和,求差
- 两个字符串分别对各ASCII求和
- 计算和值的差值
2. 时间复杂度:O(n)
3. 空间复杂度:O(1)
4. 实现
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
var findTheDifference = function(s, t) {
let tSum = 0;
for(let i=t.length-1; i>=0; i--){
tSum += t.charCodeAt(i);
}
for(let i=s.length-1; i>=0; i--){
tSum -= s.charCodeAt(i);
}
return String.fromCharCode([tSum]);
};
题解2
1. 思路:ASCII,位运算,异或(找 s+t 拼接串中字符个数为奇数的字符)
- 与只出现一次的数字类似
2. 时间复杂度:O(n)
3. 空间复杂度:O(1)
4. 实现
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
var findTheDifference = function(s, t) {
let xorSum = t.charCodeAt(0);
for(let i=t.length-1; i>0; i--){
xorSum ^= t.charCodeAt(i);
}
for(let i=s.length-1; i>=0; i--){
xorSum ^= s.charCodeAt(i);
}
return String.fromCharCode(xorSum);
};