304 North Cardinal St.
Dorchester Center, MA 02124

# Search Suggestions System LeetCode Solution

## Problem – Search Suggestions System

You are given an array of strings `products` and a string `searchWord`.

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 `searchWord`. If there are more than three products with a common prefix return the three lexicographically minimums products.

Return a list of lists of the suggested products after each character of `searchWord` is typed.

Example 1:

``````Input: products = ["mobile","mouse","moneypot","monitor","mousepad"], searchWord = "mouse"
Output: [
["mobile","moneypot","monitor"],
["mobile","moneypot","monitor"],
]
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 2:

``````Input: products = ["havana"], searchWord = "havana"
Output: [["havana"],["havana"],["havana"],["havana"],["havana"],["havana"]]``````

Example 3:

``````Input: products = ["bags","baggage","banner","box","cloths"], searchWord = "bags"
Output: [["baggage","bags","banner"],["baggage","bags","banner"],["baggage","bags"],["bags"]]``````

Constraints:

• `1 <= products.length <= 1000`
• `1 <= products[i].length <= 3000`
• `1 <= sum(products[i].length) <= 2 * 104`
• All the strings of `products` are unique.
• `products[i]` consists of lowercase English letters.
• `1 <= searchWord.length <= 1000`
• `searchWord` consists of lowercase English letters.

### Search Suggestions System LeetCode Solution in C++

``````    vector<vector<string>> suggestedProducts(vector<string>& A, string searchWord) {
auto it = A.begin();
sort(it, A.end());
vector<vector<string>> res;
string cur = "";
for (char c : searchWord) {
cur += c;
vector<string> suggested;
it = lower_bound(it, A.end(), cur);
for (int i = 0; i < 3 && it + i != A.end(); i++) {
string& s = *(it + i);
if (s.find(cur)) break;
suggested.push_back(s);
}
res.push_back(suggested);
}
return res;
}``````

### Search Suggestions System LeetCode Solution in Java

``````public List<List<String>> suggestedProducts(String[] products, String searchWord) {
List<List<String>> res = new ArrayList<>();
TreeMap<String, Integer> map = new TreeMap<>();
Arrays.sort(products);
List<String> productsList = Arrays.asList(products);

for (int i = 0; i < products.length; i++) {
map.put(products[i], i);
}

String key = "";
for (char c : searchWord.toCharArray()) {
key += c;
String ceiling = map.ceilingKey(key);
String floor = map.floorKey(key + "~");
if (ceiling == null || floor == null) break;
res.add(productsList.subList(map.get(ceiling), Math.min(map.get(ceiling) + 3, map.get(floor) + 1)));
}

while (res.size() < searchWord.length()) res.add(new ArrayList<>());
return res;
}``````

### Search Suggestions System LeetCode Solution in Python

``````    def suggestedProducts(self, A, word):
A.sort()
res, prefix, i = [], '', 0
for c in word:
prefix += c
i = bisect.bisect_left(A, prefix, i)
res.append([w for w in A[i:i + 3] if w.startswith(prefix)])
return res``````
##### Search Suggestions System LeetCode Solution Review:

In our experience, we suggest you solve this Search Suggestions System LeetCode Solution and gain some new skills from Professionals completely free and we assure you will be worth it.

If you are stuck anywhere between any coding problem, just visit Queslers to get the Search Suggestions System LeetCode Solution

Find on LeetCode

##### Conclusion:

I hope this Search Suggestions System LeetCode Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Coding Solutions.

This Problem is intended for audiences of all experiences who are interested in learning about Data Science in a business context; there are no prerequisites.

Keep Learning!

More Coding Solutions >>

LeetCode Solutions

Hacker Rank Solutions

CodeChef Solutions