LeetCode--49. Group Anagrams
阿新 • • 發佈:2018-12-08
連結: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; } }