2019-05-09 刷题

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

思路

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

代码

public List> groupAnagrams(String[] strs) {
        HashMap> map = new HashMap<>();
        Set keyList;//
        for (int i = 0; i < strs.length; i++) {
            keyList = map.keySet();
            String key = sortStr(strs[i]);
            if (!keyList.contains(key)) {
                List values = new ArrayList<>();
                values.add(strs[i]);
                map.put(key, values);
            } else {
                map.get(key).add(strs[i]);
            }
        }
        List> result = new ArrayList<>();
        for (String key :
                map.keySet()) {
            result.add(map.get(key));
            
        }
        return result;
    }
    
    private String sortStr(String str) {
        List 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();
    }
2019-05-09 刷题_第1张图片
image.png

你可能感兴趣的:(2019-05-09 刷题)