Loading

面试题 10.02. 变位词组

面试题 10.02. 变位词组

自己思路:使用 Map<String ,int [] > 数据结构,得出所以字符串 26个英文下标个数,然后 双层循环遍历 (i,j),对比 i 和 j 字符对应的 哈希表中数组的内容是否相同,如果是相同的,则加入到一个 list 中,并且 remove掉哈希表中的值。

最后提交没有通过:因为如果是多个空串,都要分到一个list 中。我的程序不能实现。

看题解思路:

​ 使用 Map<String,List<String>> 数据结构,每个字符转成 char [] ,然后排序,这样就可以实现每次都能加到 同一个 list 中。

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> map =new HashMap();
        for(String str:strs){
            char [] a =str.toCharArray();
            Arrays.sort(a);
            String key =String.valueOf(a);
            List<String> list = map.getOrDefault(key,new ArrayList<>());
            list.add(str);
            map.put(key,list);
        }    
        List<List<String>> res= new ArrayList();
        for(String key:map.keySet()) res.add(map.get(key));
        return res;
    }
}
posted @ 2021-07-18 17:37  Lsummer  阅读(41)  评论(0)    收藏  举报