[LeetCode] 字謎分組
阿新 • • 發佈:2018-12-11
給定一個字串陣列,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字串。
示例:
輸入: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
輸出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
說明:
- 所有輸入均為小寫字母。
- 不考慮答案輸出的順序。
思路:使用一個map和multiset進行維護,用multiset讀入每一個字串,看是否在map中出現過,若未出現過將其放入map並放入一個新的vector<string>中,若出現過則放入對應的vector<string>中即可
class Solution { public: vector<vector<string>> groupAnagrams(vector<string>& strs) { map<multiset<char>,int> temp; vector<vector<string>> res; int num = 0; for(int i = 0; i < strs.size();i++){ multiset<char> mp; for(int j = 0;j < strs[i].size();j++){ mp.insert(static_cast<char>(strs[i][j])); } if(temp.find(mp) == temp.end()){ temp.insert({mp,num}); res.push_back(vector<string>()); res[num++].push_back(strs[i]); } else { res[temp.find(mp)->second].push_back(strs[i]); } } return res; } };