美文网首页
49. 字母异位词分组

49. 字母异位词分组

作者: justonemoretry | 来源:发表于2021-04-16 22:38 被阅读0次

解法

前面看hash用法刚好看到判断是否是字母异位词的方法,就是使用数组记录每个字符出现的次数,但这个题还是没写好,因为没想清楚这种情况下求出count以后,怎么比较是否相同的问题,这里是将count数组转为字符串,有点压缩字符串那味了。

class Solution {

    public List<List<String>> groupAnagrams(String[] strs) {

        List<List<String>> res = new ArrayList<>();

        Map<String, List<String>> strMap = new HashMap<>();

        for (int i = 0; i < strs.length; i++) {

            String s = strs[i];

            int[] count = new int[26];

            for (int j = 0; j < s.length(); j++) {

                count[s.charAt(j) - 'a']++;

            }

            // count转字符串计数

            StringBuilder sb = new StringBuilder();

            for (int k = 0; k < count.length; k++) {

                if (count[k] != 0) {

                    sb.append((char)'a' + k);

                    sb.append(count[k]);

                }

            }

            String key = sb.toString();

            List<String> temp = strMap.getOrDefault(key, new ArrayList<>());

            temp.add(s);

            strMap.put(key, temp);

        }

        return new ArrayList<List<String>>(strMap.values());

    }

}

相关文章

网友评论

      本文标题:49. 字母异位词分组

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