[LeetCode]Group Anagrams/分組同母異序詞(同字母異序詞)

Given an array of strings, group anagrams together.
給定一個(gè)字符串?dāng)?shù)組,將同母異序詞分組在一起
Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

Note:

All inputs will be in lowercase.
The order of your output does not matter.

解:
因?yàn)榻M成字母相同只是順序不同的話,那么對一個(gè)單詞的所有字幕排序后得到的字符串如果相同,則表明他們是由相同字母組成的,順序就不需要關(guān)心了。
所以思路就是先對每個(gè)字符串排序,排序后作為key為索引查找是否已存在分組,存在的加入分組,不存在就新建一個(gè)分組再加進(jìn)去。

    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> result = new HashMap<>();
        for(String str:strs) {
            char[] chars = str.toCharArray();                           //所有的同字母異序詞都由相同的字母構(gòu)成
            Arrays.sort(chars)                  ;                           //因?yàn)闃?gòu)成字母完全一樣,所以排序后的字符串完全一樣
            String key = String.valueOf(chars);
            result.compute(key, (k,v)->{
                if(v == null) v = new ArrayList<>();
                v.add(str);
                return v;
            });
        }
        return new ArrayList<>(result.values());
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容