Trie 结构中的"charAt(i) - 'a'"是什么意思?



我正在阅读有关检查Trie数据结构的搜索函数的信息,但我不明白为什么代码减去字符a来获取索引。谁能帮忙?提前感谢!

// Returns true if key presents in trie, else false 
static boolean search(String key) 
{ 
    int level; 
    int length = key.length(); 
    int index; 
    TrieNode pCrawl = root; 
    for (level = 0; level < length; level++) 
    { 
        index = key.charAt(level) - 'a'; 
        if (pCrawl.children[index] == null) 
            return false; 
        pCrawl = pCrawl.children[index]; 
    } 
    return (pCrawl != null && pCrawl.isEndOfWord); 
} 

假设key只包含小写英文字母,key.charAt(i) = 'a'将每个小写字母映射到 0(对于 'a'(和 25(对于 'z'(之间的索引。

children数组的长度可能为 26,该数组的每个元素对应于"a"和"z"之间的后者。

在java中,每当我们从另一个字符中减去一个字符时,它都会将两个字符转换为ascii代码并返回它们的减法,例如:- a的ascii代码是97,b的ascii代码是98('b' - 'a'(将返回1

在您的代码中,当您在此方法中传递字符串时,它将从字符串的每个字符中返回减去"a">

char变量实际上是积分的,反映了相应字符的 Unicode 值。 因此,'a'实际上是97; 'b'98等。从字符中减去 97 会将 'a''z' 之间的字符转换为 025 之间的数字。

最新更新