हमारे पास एक ट्राई है, और जब कोई उपयोगकर्ता एक कैरेक्टर दर्ज करता है, तो हमें ट्राई से मिलान करने वाली स्ट्रिंग दिखानी होती है। इस फीचर को हम ऑटो-कम्प्लीशन कहते हैं। उदाहरण के लिए, यदि ट्राई में "xyzzzz," "xyz," "xxxyyxzzz" हैं और जब उपयोगकर्ता xy दर्ज करता है, तो हमें उन्हें xyzzzz, xyz, आदि दिखाने होंगे।
परिणाम प्राप्त करने के चरण।
मानक ट्राई एल्गोरिदम का उपयोग करके स्ट्रिंग खोजें।
यदि स्ट्रिंग मौजूद नहीं है, तो -1 लौटाएं।
यदि स्ट्रिंग मौजूद है और ट्राई में एक शब्द का अंत है, तो स्ट्रिंग प्रिंट करें।
यदि मिलान करने वाली स्ट्रिंग का कोई नोड नहीं है, तो लौटें।
अन्यथा सभी नोड्स प्रिंट करें।
आइए कोडिंग शुरू करें।
# ट्राई नोड के लिए क्लास
class TrieNode():
def __init__(self): # ट्राई नोड आरंभ करना
self.trie_node = {}
self.last_node = False
class Trie():
def __init__(self): # ट्राई आरंभ करना
self.root = TrieNode()
# शब्दों को स्टोर करने के लिए सूची
self.words = []
def create_trie(self, keys): # डेटा का उपयोग करके ट्राई बनाना
for key in keys: # ट्राई में एक कुंजी डालना
self.insert_node(key)
def insert_node(self, key):
node = self.root
for obj in list(key):
if not node.trie_node.get(obj):
# ट्राईनोड बनाना
node.trie_node[obj] = TrieNode()
node = node.trie_node[obj]
# लीफ नोड बनाना
node.last_node = True
def search(self, key): # कुंजी खोजना
node = self.root
is_found = True
for obj in list(key):
if not node.trie_node.get(obj):
is_found = False
break
node = node.trie_node[obj]
return node and node.last_node and is_found
def matches(self, node, word):
if node.last_node:
self.words.append(word)
for obj, n in node.trie_node.items():
self.matches(n, word + obj)
def show_auto_completion(self, key):
node = self.root
is_found = False
temp = ''
for obj in list(key):
# शब्द की जांच
if not node.trie_node.get(obj):
is_found = True
break
temp += obj
node = node.trie_node[obj]
if is_found:
return 0
elif node.last_node and not node.trie_node:
return -1
self.matches(node, temp)
for string in self.words:
print(string)
return 1
# ट्राई के लिए डेटा
strings = ["xyz", "xyzzzz", "xyabad", "xyyy", "abc", "abbccc", "xyx", "xyxer", "a"]
# ऑटो कम्प्लीशन के लिए शब्द
string = "xy"
status = ["Not found", "Found"]
# ट्राई क्लास इंस्टेंशिएट करना
trie = Trie()
# स्ट्रिंग्स का उपयोग करके ट्राई बनाना
trie.create_trie(strings)
# स्ट्रिंग्स से स्ट्रिंग के लिए ऑटो कम्प्लीशन शब्द प्राप्त करना
result = trie.show_auto_completion(string)
if result == -1 or result == 0:
print("No matches")
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम मिलेगा।
xyz xyzzzz xyabad xyyy xyx xyxer