美文网首页
字谜分组

字谜分组

作者: 小白学编程 | 来源:发表于2018-09-22 11:19 被阅读0次

    给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

    示例:

    输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
    输出:
    [
    ["ate","eat","tea"],
    ["nat","tan"],
    ["bat"]
    ]
    说明:

    所有输入均为小写字母。
    不考虑答案输出的顺序。

    思路

    判断字符串是否相等,可以进行排序,再做判断
    用hashmap来存储数据,键为该字符串经过排序的结果,值为list添加了该字符串的原值

    class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
            
            if(strs==null || strs.length == 0){
                return new ArrayList<List<String>>();
            }
            Map<String,List<String>> map=new HashMap<String,List<String>>();
            
            for(int i=0;i<strs.length;++i){
                
                char[] s=strs[i].toCharArray();
                Arrays.sort(s);
                String st=new String(s);
                List<String> list=new ArrayList<String>();
                
                if(map.containsKey(st)){
                    list=map.get(st);
                }
                list.add(strs[i]);
                map.put(st,list);
            }
            return new ArrayList<List<String>>(map.values());
        }
    }
    

    相关文章

      网友评论

          本文标题:字谜分组

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