【问题标题】:IsAnagram, why - 97? - JavascriptIsAnagram,为什么 - 97? - Javascript
【发布时间】:2021-04-10 01:05:01
【问题描述】:

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

【问题讨论】:

    标签: javascript algorithm ascii


    【解决方案1】:

    97 是小写字母“a”的 ASCII 码。通过减去 97,它将小写字母 a-z 映射到整数 0..25,它们是分配数组中的有效索引。

    严格来说,这不是必需的。您可以使用更大的数组(例如大小为 128)来处理所有 ASCII。那么你就不需要减去任何东西了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多