【问题标题】: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') == 1ord('z') - ord('a') == 25

    【讨论】:

      【解决方案2】:

      我喜欢上一个答案,但这就是它的工作原理,而不是你这样做的原因。我认为目的是使用具有 26 个插槽的列表数据结构来包含每个节点的子节点。 charToIndex 函数将 alpha 转换为从 0 到 25 的 int(希望如此),您可以在添加或搜索函数期间检查该子节点是否存在。它确实优于使用列表,并且可能必须遍历整个列表才能找到您想要的列表。它也可能会或可能不会击败子节点的哈希图查找,但我认为时间差异会很小。该列表可能会加快添加和搜索功能,但不会加速遍历...您仍然需要在遍历期间测试所有 26 个子节点!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-08
        • 2018-03-25
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2020-06-18
        • 2023-02-02
        • 2014-06-30
        相关资源
        最近更新 更多