1268. Search Suggestions System
1268. Search Suggestions System
class TrieNode:
def __init__(self):
self.children = defaultdict(TrieNode)
self.words = list()
class Trie:
def __init__(self):
self.root = TrieNode()
self.node = self.root
def add_word(self, word):
node = self.root
for c in word:
node = node.children[c]
if len(node.words) < 3:
node.words.append(word)
def find_word_by_prefix(self, c):
if self.node and c in self.node.children:
self.node = self.node.children[c]
return self.node.words
else:
self.node = None
return []
class Solution:
def suggestedProducts(self, A: List[str], searchWord: str) -> List[List[str]]:
A.sort()
trie = Trie()
for word in A: trie.add_word(word)
return [trie.find_word_by_prefix(c) for c in searchWord]
class Solution:
def suggestedProducts(self, products: List[str], searchWord: str) -> List[List[str]]:
ans = []
products.sort()
for i, c in enumerate(searchWord):
products = [ product for product in products if len(product) > i and product[i] == c ]
ans.append(products[:3])
return ans