leetcode 49 字母異位詞分組 Java
阿新 • • 發佈:2018-12-20
題目:
給定一個字串陣列,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字串。
思路:
//遍歷字串陣列,對每個字串用Arrays.sort進行排序,將排序得到的沒個結果作為map的key,而value則是一個List
//如果value為空則建立,不為空則把沒有排序前的字串放進去。 最後將Map裡的多個value依此存到一個List裡即可。
//49 字母異位詞分組 擊敗了84.16% 的使用者 public List<List<String>> groupAnagrams(String[] strs) { List<List<String>> ret = new ArrayList<List<String>>(); Map<String,List<String>> map = new HashMap<>(); for(String s : strs) { char[] c = s.toCharArray(); Arrays.sort(c);//parallelSort String sorted = ""; for(char tmp : c) sorted += tmp; // System.out.println("" + sorted); if(map.get(sorted) == null) { List<String> list = new ArrayList<String>(); list.add(s); map.put(sorted, list); } else { map.get(sorted).add(s); } } for(List<String> tmp : map.values()) { ret.add(tmp); } return ret; }