-
Notifications
You must be signed in to change notification settings - Fork 26
/
1268.SearchSuggestionsSystem.py
86 lines (78 loc) · 2.88 KB
/
1268.SearchSuggestionsSystem.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
'''
Given an array of strings products and a string searchWord.
We want to design a system that suggests at most three
product names from products after each character of
searchWord is typed. Suggested products should have common
prefix with the searchWord. If there are more than three
products with a common prefix return the three
lexicographically minimums products.
Return list of lists of the suggested products after each
character of searchWord is typed.
Example:
Input: products = ["mobile","mouse","moneypot","monitor","mousepad"],
searchWord = "mouse"
Output: [
["mobile","moneypot","monitor"],
["mobile","moneypot","monitor"],
["mouse","mousepad"],
["mouse","mousepad"],
["mouse","mousepad"]
]
Explanation: products sorted lexicographically =
["mobile","moneypot","monitor","mouse","mousepad"]
After typing m and mo all products match and
we show user ["mobile","moneypot","monitor"]
After typing mou, mous and mouse the system
suggests ["mouse","mousepad"]
Example:
Input: products = ["havana"],
searchWord = "havana"
Output: [
["havana"],
["havana"],
["havana"],
["havana"],
["havana"],
["havana"]
]
Example:
Input: products = ["bags","baggage","banner","box","cloths"],
searchWord = "bags"
Output: [
["baggage","bags","banner"],
["baggage","bags","banner"],
["baggage","bags"],["bags"]
]
Example:
Input: products = ["havana"],
searchWord = "tatiana"
Output: [[],[],[],[],[],[],[]]
Constraints:
- 1 <= products.length <= 1000
- There are no repeated elements in products.
- 1 <= Σ products[i].length <= 2 * 10^4
- All characters of products[i] are lower-case
English letters.
- 1 <= searchWord.length <= 1000
- All characters of searchWord are lower-case
English letters.
'''
#Difficulty: Medium
#41 / 41 test cases passed.
#Runtime: 628 ms
#Memory Usage: 17 MB
#Runtime: 628 ms, faster than 19.59% of Python3 online submissions for Search Suggestions System.
#Memory Usage: 17 MB, less than 89.61% of Python3 online submissions for Search Suggestions System.
class Solution:
def suggestedProducts(self, products: List[str], searchWord: str) -> List[List[str]]:
products.sort()
result = []
for i in range(1, len(searchWord)+1):
temp = []
for word in products:
if word.startswith(searchWord[:i]):
temp.append(word)
if 3 == len(temp):
break
result.append(temp)
return result