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]);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);13
while (p < pq.size() && p < 3) {14
segment.add(pri.poll());22
public PriorityQueue<String> reduce(PriorityQueue<String> pr, String filter) {23
PriorityQueue<String> p = new PriorityQueue<>();25
while (!pr.isEmpty()) {27
if (s.startsWith(filter)) p.add(s);