javascript - IsAnagram,为什么是- 97? - JavaScript

标签 javascript algorithm ascii

我试图理解这个 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/

相关文章:

javascript - 如何对对象数组进行分组和求和?

bash - 在 bash 中进行 Ascii/Hex 转换

javascript - 无法对回调函数进行分页

javascript - 捕获 SVG 并重新缩放为微型

algorithm - f(n) = I*Log(I) 的西格玛,其中 I=1 到 Log(n) 等于什么?

algorithm - Voronoi 图 : How to implement parabloas?

java - Java中将ascii逆向转换为整数十进制

java - 理解字符串算法中的 "find maximum occuring char"

javascript - 隐藏 jQuery 数据表中的列?

python - 从python中的图形中提取点