题目: Given an array of strings,group anagrams together.
For example,given: [“eat”,“tea”,“tan”,“ate”,“nat”,“bat”],
Return:
[
[“ate”,“eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]
Note:
1.For the return value,each inner list’s elements must follow the lexicographic order.
2.All inputs will be in lower-case.
思路: 哈希表实现
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> result;
unordered_map<string,int> hashmap;
string temp;
int pos=0;
for(int i=0;i<strs.size();++i)
{
temp=strs[i];
sort(temp.begin(),temp.end());
if(hashmap.find(temp)==hashmap.end())
{
hashmap[temp]=pos++;
result.push_back(vector<string>(1,strs[i]));
}
else
{
result[hashmap[temp]].push_back(strs[i]);
}
}
for(int i=0;i<result.size();++i)
sort(result[i].begin(),result[i].end());
return result;
}
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。