1. 程式人生 > >LeetCode--49. Group Anagrams

LeetCode--49. Group Anagrams

連結:https://leetcode.com/problems/group-anagrams/

這個題目思路很清晰,不難發現能夠歸併在一起的單詞之間的聯絡:具有相同的字母並且字母的數量相同,怎樣來把這兩個資訊都儲存起來呢,可以先對字串進行字母計數,然後將出現次數非0的按照”字母“+”該字母的數量“進行字元拼接,通過HashMap將同類資訊-同類的多個字串的key-value儲存起來。

直接上程式碼;

class Solution {
    public static List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> ret=new LinkedList<>();
        HashMap<String, LinkedList<String>> hashmap=new HashMap<>();
        for(int i=0;i<strs.length;i++)
        {

            String s=strs[i];
            int[] count=new int[26];
            for(int j=0;j<s.length();j++)
                count[s.charAt(j)-'a'] += 1;
            String key="";
            for(int j=0;j<count.length;j++)
                key += new Integer(j).toString()+new Integer(count[j]).toString();
            if(hashmap.containsKey(key))
                hashmap.get(key).add(strs[i]);
            else
            {
                LinkedList<String> newList =new LinkedList<>();
                newList.add(strs[i]);
                hashmap.put(key,newList);
            }
        }

        for(String st:hashmap.keySet())
            ret.add(hashmap.get(st));
        return ret;
    }
}