lc49.java 1021 字节
Newer Older
L
liu13 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package code;

import java.util.*;

/*
 * 49. Group Anagrams
 * 题意:相同字母组合的字符串分到一个组里
 * 难度:Medium
 * 分类:Hash Table, String
 * Tips:思路很直接,用map即可.注意java和python的不一样,不能用set集合做key,即使set的内容一样,但java类似指针的引用方式,使得set不可能相等.
 */
public class lc49 {
    public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String,List<String>> m = new HashMap();
        for (int i = 0; i < strs.length ; i++) {
            char[] chs = strs[i].toCharArray();
L
liu13 已提交
17
            Arrays.sort(chs);   //对字符串排序
L
liu13 已提交
18 19 20 21 22 23 24 25 26
            String key = String.valueOf(chs);
            if(m.containsKey(key))
                m.get(key).add(strs[i]);
            else {
                ArrayList<String> l = new ArrayList<String>();
                l.add(strs[i]);
                m.put(key,l);
            }
        }
L
liu13 已提交
27
        return new ArrayList(m.values());   //学下这句的语法
L
liu13 已提交
28 29
    }
}