【问题标题】:Trie implementation using python - charToIndex使用 python 实现 Trie - charToIndex
【发布时间】:2020-05-25 17:12:46
【问题描述】:
我正在尝试在链接中引用 Trie 实现 python 代码
https://www.geeksforgeeks.org/trie-insert-and-search/
我想问一个关于以下私有方法的问题:
def _charToIndex(self,ch):
# private helper function
# Converts key current character into index
# use only 'a' through 'z' and lower case
return ord(ch)-ord('a')
这如何帮助获取字符的索引,即通过将字符 ch 转换为 Unicode,从中减去 - 'a' 的 Unicode 值
请帮助澄清。
谢谢!
【问题讨论】:
标签:
python-3.x
unicode
trie
【解决方案1】:
ord() 给出 Unicode 代码点(整数)。 a-z 的代码点是连续的,因此ord(ch) - ord('a') 将字符的索引作为a 的偏移量给出。 ord('a') == 97,例如,ord('b') - ord('a') == 1 和 ord('z') - ord('a') == 25。
【解决方案2】:
我喜欢上一个答案,但这就是它的工作原理,而不是你这样做的原因。我认为目的是使用具有 26 个插槽的列表数据结构来包含每个节点的子节点。 charToIndex 函数将 alpha 转换为从 0 到 25 的 int(希望如此),您可以在添加或搜索函数期间检查该子节点是否存在。它确实优于使用列表,并且可能必须遍历整个列表才能找到您想要的列表。它也可能会或可能不会击败子节点的哈希图查找,但我认为时间差异会很小。该列表可能会加快添加和搜索功能,但不会加速遍历...您仍然需要在遍历期间测试所有 26 个子节点!