49. Group Anagrams

Given an array of strings, group anagrams together.

For example, given: <code>["eat", "tea", "tan", "ate", "nat", "bat"]</code>
Return:
<pre>
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
]
</pre>


解題思路

這道題是將字符串進行分類,如果所含的字母相同即為同一類字符串。
換句話說,如果同一類的字符串中的字符進行排序后,他們就是同一個字符串。

我們可以定義一個map<string, int>,每一個排序后的串對應(yīng)他的類別。對于一個新串,如果他屬于其中某個類,則將其加入;如果不屬于任何有一個類,則開一個新類來存儲。


代碼

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> res;
        vector<string> linner;
        map<string, int> mp;
        string copy;
        
        for (int i = 0; i < strs.size(); i++) {
            copy = strs[i];
            sort(copy.begin(), copy.end());
            if (mp.find(copy) == mp.end()) {
                //找不到所屬的類別
                linner.clear();
                linner.push_back(strs[i]);
                mp[copy] = res.size();
                res.push_back(linner);
            } else {
                //存在所屬的類別
                res[mp[copy]].push_back(strs[i]);
            }
        }
        
        return res;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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