trie树前缀劫持的python代码
时间: 2024-09-11 15:11:19 浏览: 52
Trie树(也称为字典树或前缀树),是一种用于高效存储和查找字符串数据的数据结构,常用于自动补全、拼写检查等场景。前缀劫持(Prefix Hijacking)通常是指在搜索过程中,通过构造特定的前缀使得查询结果指向非预期的目标。
以下是一个简单的Python代码示例,展示了如何创建Trie树并实现前缀匹配:
```python
class TrieNode:
def __init__(self):
self.children = [None] * 26 # 对于ASCII字母表,假设只包含小写字母
self.is_word = False # 标记当前节点是否表示一个完整的单词
def insert_trie(root, word):
node = root
for char in word:
index = ord(char) - ord('a')
if not node.children[index]:
node.children[index] = TrieNode()
node = node.children[index]
node.is_word = True # 当遍历完一个词,标记为词
def search_trie(root, prefix):
node = root
for char in prefix:
index = ord(char) - ord('a')
if not node.children[index]:
return False # 如果前缀不存在,则返回False
node = node.children[index]
# 到达前缀节点后,进一步查找是否存在完整的单词
return any(node.children[i].is_word for i in range(26))
# 使用示例
root = TrieNode()
insert_trie(root, "hello")
insert_trie(root, "world")
insert_trie(root, "hijack") # 假设这是前缀劫持的关键字
prefix = "hi"
if search_trie(root, prefix):
print(f"存在前缀'{prefix}'劫持的单词")
else:
print(f"不存在前缀'{prefix}'劫持的单词")
阅读全文