Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. '''
  2. For example, given the query string 'de' and
  3. the set of strings [dog, deer, deal],
  4. return [deer, deal].
  5. '''
  6.  
  7. class TrieNode:
  8. def __init__(self):
  9. self.next_chars=[None for i in range(26)]
  10. self.is_end=False
  11.  
  12. class Trie_Data_Structure:
  13. def __init__(self):
  14. self.root=TrieNode()
  15. self.word_dict=[]
  16.  
  17. def insert(self,word):
  18. node=self.root
  19. for i in range(len(word)):
  20. if not node.next_chars[ord(word[i])-ord('a')]:
  21. node.next_chars[ord(word[i])-ord('a')]=TrieNode()
  22. node=node.next_chars[ord(word[i])-ord('a')]
  23. node.is_end=True
  24.  
  25. def search(self,word):
  26. node=self.root
  27. for i in range(len(word)):
  28. if node.next_chars[ord(word[i])-ord('a')]:
  29. node=node.next_chars[ord(word[i])-ord('a')]
  30. else:
  31. self.word_dict=[]
  32. return
  33. self.word_dict=[]
  34. self.autocomplete_search(node,word)
  35.  
  36. def autocomplete_search(self,node,word):
  37. if node.is_end:
  38. self.word_dict.append(word)
  39. for i in range(26):
  40. if node.next_chars[i]:
  41. self.autocomplete_search(node.next_chars[i],word+chr(i+ord('a')))
  42.  
  43.  
  44.  
  45. if __name__=="__main__":
  46. n=int(input())
  47. trie=Trie_Data_Structure()
  48. while(n!=0):
  49. n-=1
  50. query,word=input().split()
  51. if query=="add":
  52. trie.insert(word)
  53. else:
  54. trie.search(word)
  55. if(trie.word_dict):
  56. print(trie.word_dict)
  57. else:
  58. print(None)
  59.  
  60. '''
  61. Input:
  62. 7
  63. add dog
  64. add deer
  65. add deal
  66. find d
  67. find de
  68. find dee
  69. find dealt
  70.  
  71. Output:
  72. ['deal', 'deer', 'dog']
  73. ['deal', 'deer']
  74. ['deer']
  75. None
  76. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement