1. 程式人生 > >leetcode 49 字母異位詞分組 Java

leetcode 49 字母異位詞分組 Java

題目:

給定一個字串陣列,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字串。

思路:

//遍歷字串陣列,對每個字串用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;
        }