1
class Solution {
2
public List<List<String>> suggestedProducts(String[] products, String searchWord) {
3
PriorityQueue<String> pq = new PriorityQueue<String>();
4
List<List<String>> res = new LinkedList<List<String>>();
5
List<String> segment = new LinkedList<String>();
6
for (int i = 0; i < products.length; i++) pq.offer(products[i]);
7

8
for (int j = 0; j < searchWord.length(); j++) {
9
segment = new LinkedList<String>();
10
pq = reduce(pq, searchWord.substring(0, j + 1));
11
PriorityQueue<String> pri = new PriorityQueue<>(pq);
12
int p = 0;
13
while (p < pq.size() && p < 3) {
14
segment.add(pri.poll());
15
p++;
16
}
17
res.add(segment);
18
}
19
return res;
20
}
21

22
public PriorityQueue<String> reduce(PriorityQueue<String> pr, String filter) {
23
PriorityQueue<String> p = new PriorityQueue<>();
24
String s = "";
25
while (!pr.isEmpty()) {
26
s = pr.poll();
27
if (s.startsWith(filter)) p.add(s);
28
}
29
return p;
30
}
31
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0