हमारे पास एक ट्री है, और जब कोई उपयोगकर्ता एक चरित्र में प्रवेश करता है, तो हमें मिलान स्ट्रिंग को ट्री दिखाना होगा। इस सुविधा को हम स्वतः पूर्णता कहते हैं। उदाहरण के लिए, यदि किसी ट्री में "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