हमारे पास एक ट्री है, और जब कोई उपयोगकर्ता एक चरित्र में प्रवेश करता है, तो हमें मिलान स्ट्रिंग को ट्री दिखाना होगा। इस सुविधा को हम स्वतः पूर्णता कहते हैं। उदाहरण के लिए, यदि किसी ट्री में "xyzzzz,""xyz," "xxxyyxzz" है और जब उपयोगकर्ता xy . दर्ज करता है , तो हमें उन्हें दिखाना होगा xyzzzz, xyz , आदि..,
परिणाम प्राप्त करने के लिए कदम।
-
मानक ट्री एल्गोरिथम का उपयोग करके स्ट्रिंग की खोज करें।
-
यदि स्ट्रिंग मौजूद नहीं है, तो -1 लौटें।
-
यदि स्ट्रिंग मौजूद है और ट्री में किसी शब्द का अंत है, तो स्ट्रिंग को प्रिंट करें।
-
यदि मेल खाने वाली स्ट्रिंग में कोई नोड नहीं है, तो वापस लौटें।
-
अन्यथा सभी नोड्स प्रिंट करें।
आइए कोडिंग शुरू करें।
# class for Trie Node
class TrieNode():
def __init__(self):
# initialising trie node
self.trie_node = {}
self.last_node = False
class Trie():
def __init__(self):
# initialising the trie
self.root = TrieNode()
# list to store the words
self.words = []
def create_trie(self, keys):
# creating the Trie using data
for key in keys:
# inserting one key to the trie
self.insert_node(key)
def insert_node(self, key):
node = self.root
for obj in list(key):
if not node.trie_node.get(obj):
# creating a TrieNode
node.trie_node[obj] = TrieNode()
node = node.trie_node[obj]
# making leaf node
node.last_node = True
def search(self, key):
# searching for the 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):
# checking the word
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
# data for the Trie
strings = ["xyz", "xyzzzz", "xyabad", "xyyy", "abc", "abbccc", "xyx", "xyxer",
a"]
# word for auto completion
string = "xy"
status = ["Not found", "Found"]
# instantiating Trie class
trie = Trie()
# creating Trie using the strings
trie.create_trie(strings)
# getting the auto completion words for the string from strings
result = trie.show_auto_completion(string)
if result == -1 or result == 0:
print("No matches") यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
xyz xyzzzz xyabad xyyy xyx xyxer