Given an array of strings, group anagrams together.
題目要求輸入一個字符串數組,咱們要將由一樣字母組成的字符串整理到一塊兒,而後以以下例子中的格式輸出。
不須要關注輸出的順序,全部的輸入都是小寫。Example:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]數組
toCharArray()
方法轉爲字符數組,再經過Arrays.sort()
對拆解後的字符數組從新排序。這樣的話,若是兩個字符串的組成字符相同,那他們拆解後的字符數組通過排序也必定是相同的。public List<List<String>> groupAnagrams(String[] strs) { //邊界狀況判斷 if(strs.length==0)return new ArrayList(); HashMap<String,ArrayList<String>> res = new HashMap<String,ArrayList<String>>(); for(String s : strs){ char[] temp = s.toCharArray(); Arrays.sort(temp); String key = String.valueOf(temp); //若是存在相同組成的元素 if(!res.containsKey(key)){ res.put(key, new ArrayList()); } res.get(key).add(s); } return new ArrayList(res.values()); }