原题链接:https://leetcode-cn.com/problems/find-the-difference/
解题思路:
-
位运算中的异或运算有以下特点:
0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
a ^ b ^ a = (a ^ a) ^ b = 0 ^ b = b
-
字符串s和t中,只有一个字母是不同的,而其他相同的字符,都可以通过ASCII码的异或运算相互抵消,剩下的就是被添加字母的ASCII码。
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
var findTheDifference = function (s, t) {
let code = 0; // 保存ASCII码的值
const str = s + t; // 将s和t组成一个新字符串
// 将字符串中的所有字符转成ASCII码进行异或运算,相同的字符会被抵消
// 最后剩下的就是多余字符的ASCII码
for (let i = 0; i < str.length; i++) {
code ^= str.charCodeAt(i);
}
// 将ASCII码转换成字符串返回
return String.fromCharCode(code);
};