美文网首页
2019-05-09 刷题

2019-05-09 刷题

作者: 头发依然在 | 来源:发表于2019-05-10 15:40 被阅读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

    相关文章

      网友评论

          本文标题:2019-05-09 刷题

          本文链接:https://www.haomeiwen.com/subject/lcbioqtx.html