算法49. Group Anagrams

49. Group Anagrams
Given an array of strings, group anagrams together.

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.

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        
    }
}

分類(lèi)相同字母異序詞,給一個(gè)字符串?dāng)?shù)組,把相同字母異序詞放在一起。
Note:

  • 所有的輸入都是小寫(xiě)
  • 順序不重要

解:
思路一:暴力遍歷,一個(gè) List<Set<String>>,里面裝 set,set 裝 每個(gè)字符串的最小子串。依次遍歷,判斷當(dāng)前字符串的所有子串是否存在 set 中,存在,則加入到對(duì)應(yīng)位置;都不存在,則新建一個(gè) set。
思路二:在思路一的基礎(chǔ)上,改用map,把字符串轉(zhuǎn)成 char[] 排序,再轉(zhuǎn)成 String,這樣就不用 set 去判斷每個(gè)子串,直接判斷字符串是否存在即可。代碼如下:

public List<List<String>> groupAnagrams(String[] strs) {
    if (strs == null || strs.length == 0) {
        return new ArrayList<List<String>>();
    }
    Map<String, List<String>> map = new HashMap<String, List<String>>();
    for (String s : strs) {
        char[] ca = s.toCharArray();
        Arrays.sort(ca);
        String keyStr = String.valueOf(ca);
        if (!map.containsKey(keyStr)) {
            map.put(keyStr, new ArrayList<String>());
        }
        map.get(keyStr).add(s);
    }
    return new ArrayList<List<String>>(map.values());
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,674評(píng)論 1 32
  • 一、set集合【了解】 1.概述 和數(shù)學(xué)上的集合基本是一樣的,特點(diǎn):不允許有重復(fù)元素,可以進(jìn)行交集,并集,差集的運(yùn)...
    墨雨love薏雪閱讀 750評(píng)論 0 0
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,993評(píng)論 0 11
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,718評(píng)論 0 5
  • 今天分享的是跑步的重要性,如何跑步,如何執(zhí)行!很好,跑步可以鍛煉身體,磨練意志力,當(dāng)然個(gè)人要量力而行,要把...
    鴻運(yùn)當(dāng)頭168閱讀 212評(píng)論 0 1

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