2019-05-09 刷题

2019-05-10  本文已影响0人  头发依然在

题目 https://leetcode-cn.com/problems/group-anagrams/

思路

定义一个map<String,List<String>>,然后遍历数组,对每一个字符串进行排序(从a---z递增),排序后的字符串作为key存到map的keyset中,将排序后相同的字符串放到key对应的value的集合中。

代码

public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String, List<String>> map = new HashMap<>();
        Set<String> keyList;//
        for (int i = 0; i < strs.length; i++) {
            keyList = map.keySet();
            String key = sortStr(strs[i]);
            if (!keyList.contains(key)) {
                List<String> values = new ArrayList<>();
                values.add(strs[i]);
                map.put(key, values);
            } else {
                map.get(key).add(strs[i]);
            }
        }
        List<List<String>> result = new ArrayList<>();
        for (String key :
                map.keySet()) {
            result.add(map.get(key));
            
        }
        return result;
    }
    
    private String sortStr(String str) {
        List<String> list1 = new ArrayList<>();
        for (int i = 0; i < str.length(); i++) {
            list1.add(String.valueOf(str.charAt(i)));
        }
        Collections.sort(list1);
        StringBuffer buffer = new StringBuffer();
        for (String ss :
                list1) {
            buffer.append(ss);
        }
        return buffer.toString();
    }
image.png
上一篇下一篇

猜你喜欢

热点阅读