我正在閱讀有關檢查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
提交
取消