当前位置: 代码迷 >> 综合 >> LeetCode第49题解析
  详细解决方案

LeetCode第49题解析

热度:99   发布时间:2024-01-31 01:38:20.0

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[["ate","eat","tea"],["nat","tan"],["bat"]
]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

解法一:遍历string,排序后存放在unordered_map中,归类输出。

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> res;//map的键为排序后的字符串,值为res中vector对应的下标unordered_map<string, int> siMap;//临时字符串,用于接收排序后的字符串string tmp;//vector初始下标//int sub = 0;for (string str : strs) {tmp = str;sort(tmp.begin(), tmp.end());if (siMap.count(tmp)) {res[siMap[tmp]].push_back(str);}else {//也可以不用变量来记录,巧妙的用res.size()来控制//但是要注意,先放入tmp,再加入res中。siMap[tmp] = res.size();vector<string> vec(1, str);res.push_back(vec);}}return res;}
};