49. 字母异位词分组

package leetcode;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class demo_49 {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> list=new ArrayList<List<String>>();
        HashMap<String, List<String>> hm=new HashMap<String, List<String>>();
        for(String s:strs) {
            //对字符串进行排序,如果排序后的顺序一样则属于同一类
            char[] ch=s.toCharArray();
            Arrays.sort(ch);
            String s1="";
            for(char c:ch) {
                s1=s1+c;
            }
            //如果是同一类则加入到相应的List集合中
            if(hm.containsKey(s1)) {
                hm.get(s1).add(s);
            }
            //如果hashmap没有同一类,则创建一个新的类
            else {
                hm.put(s1, new ArrayList<String>());
                hm.get(s1).add(s);
            }
        }
        //将value都放到list集合中
        for(String s2:hm.keySet()) {
            list.add(hm.get(s2));
        }
        System.out.println(list);
        return list;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_49 d49=new demo_49();
        String[] strs= {"eat", "tea", "tan", "ate", "nat", "bat"};
        d49.groupAnagrams(strs);
    }

}

 

posted on 2021-06-12 10:42  一仟零一夜丶  阅读(42)  评论(0)    收藏  举报