思路:定义结果容器,和一个临时存放的容器,还有状态数组。临时存放的容器用来装把字符串排序之后的顺序。状态数组用来记录字符串有没有进入容器。
每取出原字符串数组的元素,就排序然后放到临时容器当中。
在已经排序好的临时容器中,每个元素取出来分别与其他的字符串元素进行比较。如果相同,那么就是异位词;否则就不是。
注意:每一个字符串不能重复比较,注意用状态数组进行判断重复字符串。
然后放入结果容器当中。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>>res;
int flag[10010];
for(int i=0;i<10010;i++){
flag[i]=0;
}
vector<string>linshi;
for(int i=0;i<strs.size();i++){
string buf=strs[i];
sort(buf.begin(),buf.end());
linshi.push_back(buf);
}
for(int i=0;i<linshi.size();i++){
if(!flag[i]){
flag[i]=1;
vector<string>cnt;
string buf=linshi[i];
cnt.push_back(strs[i]);
for(int j=i+1;j<linshi.size();j++){
if(linshi[j]==buf&&!flag[j]){
flag[j]=1;
cnt.push_back(strs[j]);
}
}
res.push_back(cnt);
}
}
return res;
}
};