LeetCode Anagrams

来源:互联网 发布:网络的吃鸡是啥意思 编辑:程序博客网 时间:2024/06/08 13:29

原题链接在这里:https://leetcode.com/problems/anagrams/

作者道题让我想起刚才的 Valid Anagram 简直想的太麻烦了。

这道题的思路就是sort strs 数组中的每一个string,建立HashMap,key 是 sorted string, value 是 list of all original strings.

最后iterate hm,所有value 长度大于1的都是anagram。

Note:1. sort string 就用 string.toCharArray(), 然后用Arrays.sort(), 最后建立一个new String。这里注意是Arrays 而不是 Array。

    2. list 的长度用 list.size().

    3. 链接现有list 到一个新的list上可以直接用 mainList.addAll(subList) 来完成。


AC Java:

<span style="font-size:14px;">public class Solution {    public List<String> anagrams(String[] strs) {        if(strs == null || strs.length == 0)            return null;                    List<String> res = new ArrayList<String>();                HashMap<String,ArrayList<String>> hm = new HashMap<String,ArrayList<String>>();                for(int i = 0; i < strs.length; i++){            String key = sortStr(strs[i]);            if(hm.containsKey(key)){                hm.get(key).add(strs[i]);            }else{                ArrayList<String> valList = new ArrayList<String>();                valList.add(strs[i]);                hm.put(key, valList);            }        }                for(String s : hm.keySet()){            if(hm.get(s).size() > 1){                res.addAll(hm.get(s));            }        }        return res;                    }        private String sortStr(String s){        char[] temp = s.toCharArray();        Arrays.sort(temp); //error        String str = new String(temp);        return str;    }}</span>

0 0
原创粉丝点击