*LeetCode-Anagrams

又忘记了lc没有hashtable 要用hashmap 几个常用函数还是不太记得,尤其是最后一个循环里面的for each方法 entryset 还有就是list可以addAll

出错的是最后加入答案的时候没有判断对于一个key 它的value里面有几个string 只有一个的话就没有和它是anagram的

这个题还有一点就是怎样sort一个string 要先变成char 数组 再sort

public class Solution {
    public List<String> anagrams(String[] strs) {
        List<String> res = new ArrayList<String>();
        if ( strs == null || strs.length == 0)
            return res;
        HashMap <String, List<String>> table = new HashMap <String,List<String>>();
        for ( int i = 0; i < strs.length; i ++ ){
            char[] sorted = strs[i].toCharArray();
            Arrays.sort( sorted );
            String s = new String(sorted);
            if ( table.containsKey(s) ){
                table.get(s).add(strs[i]);
            }
            else{
                List<String> list = new ArrayList<String>();
                list.add(strs[i]);
                table.put(s, list);
            }
        }
        for(Map.Entry<String, List<String>> entry: table.entrySet()) {
            List<String> value = entry.getValue();
            if (value.size() > 1) {
                res.addAll(value);
            }   
        }
        
        return res;
    }
}


你可能感兴趣的:(*LeetCode-Anagrams)