我正在阅读有关检查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); }
3 回答

桃花长相依
TA贡献1860条经验 获得超8个赞
假设只包含小写英文字母,则将每个小写字母映射到 0(表示“a”)和 25(表示“z”)之间的索引。key
key.charAt(i) = 'a'
数组的长度可能为 26,该数组的每个元素都对应于 “a” 和 “z” 之间的后者。children

白猪掌柜的
TA贡献1893条经验 获得超10个赞
在java中,每当我们从另一个字符中减去一个字符时,它会将两个字符转换为ascii代码并返回它们的减法,例如:- a的ascii代码是97,b的ascii代码是98( 'b' - 'a' )将返回1
在代码中,当您在此方法中传递字符串时,它将从字符串的每个字符返回“a”的减法

三国纷争
TA贡献1804条经验 获得超7个赞
char
变量实际上是积分,反映了相应字符的 Unicode 值。 因此,实际上 ; 是等。从字符中减去 97 会将字符转换为 和 之间的数字。'a'
97
'b'
98
'a'
'z'
0
25
添加回答
举报
0/150
提交
取消