Search Suggestions System

给一个字符串数组, 里面是products, 给一个searchword, 求写一个推荐系统. 这个用treeset来做, 注意两个特殊情况, 一个是第一位就不匹配的时候, 就别推荐了… 一个是treeset的highkey和lowkey不能判断字符串的匹配, 他们只是判断字典序的顺序, 需要多加一句匹配判断.

class Solution {
    public List<List<String>> suggestedProducts(String[] products, String searchWord) {
        TreeSet<String> set = new TreeSet<>();
        List<List<String>> res = new ArrayList<>();
        for(String p : products)
            if (p.charAt(0) == searchWord.charAt(0))
                set.add(p);
        for(int i = 0 ; i  < searchWord.length(); i++) {
            String w = searchWord.substring(0,i+1);
            List<String> tmp = new ArrayList<>();
            for (int j = 0; j < 3; j++) {
                String str = set.ceiling(w);
                if (!set.isEmpty() &&  str != null && str.contains(w)) {
                    tmp.add(str);
                    set.remove(str);
                }
            }
            set.addAll(tmp);
            res.add(tmp);
        }
        return res;
    }
}