三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

LeetCode 前缀树应用场景题解

LeetCode 前缀树应用场景题解

LeetCode 前缀树应用场景题解

题目描述

总结前缀树的各种应用场景。

前缀树的应用场景

1. 自动补全

  • 输入框自动补全,根据用户输入的前缀返回可能的完整字符串。

2. 搜索引擎

  • 搜索引擎的搜索建议,根据用户输入的前缀返回搜索建议。

3. IP路由

  • 在网络中查找最长前缀匹配,用于 IP 路由。

4. 字符串分类

  • 将字符串按照前缀进行分类。

5. 词频统计

  • 统计字符串出现的频率。

6. 字符串搜索

  • 在文本中搜索模式串的出现位置。

7. 最大异或值

  • 找出数组中两个元素的最大异或值。

代码实现

class TrieNode: def __init__(self): self.children = {} self.is_end = False self.count = 0 class Trie: def __init__(self): self.root = TrieNode() def insert(self, word): node = self.root for char in word: if char not in node.children: node.children[char] = TrieNode() node = node.children[char] node.count += 1 node.is_end = True def search(self, word): node = self.root for char in word: if char not in node.children: return None node = node.children[char] return node.count def startsWith(self, prefix): node = self.root for char in prefix: if char not in node.children: return 0 node = node.children[char] return node.count # 测试 def test_trie(): trie = Trie() trie.insert("apple") trie.insert("app") print(trie.search("app")) # 输出:1 print(trie.startsWith("ap")) # 输出:2 if __name__ == "__main__": test_trie()

总结

前缀树是一种高效的数据结构,适用于处理字符串前缀相关的各种问题。

← 返回列表