我试图理解这个 isAnagram 算法,其中两个单词需要具有相同的长度和相同的字母, 有人知道为什么需要-97吗? 这个数字从哪里来?
为什么一定是数字97?
var isAnagram = function(s, t) {
if (s.length !== t.length) return false;
let checkArray = new Array(26).fill(0);
for (let i = 0; i < s.length; i++) {
checkArray[s.charCodeAt(i) - 97]++;
}
for (let x = 0; x < t.length; x++) {
checkArray[t.charCodeAt(x) - 97]--;
}
for (let k = 0; k < 26; k++) {
if (checkArray[k] !== 0) return false;
}
return true;
};
console.log('Anagram: ', isAnagram("anagram","nagaram"))
最佳答案
97
是小写字母“a”的 ASCII 代码。通过减去 97,它将小写字母 a-z 映射到整数 0..25,它们是分配的数组中的有效索引。
严格来说这不是必需的。您可以使用更大的数组(例如大小为 128)来处理所有 ASCII。那么你就不需要减去任何东西。
关于javascript - IsAnagram,为什么是- 97? - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67029910/