首页 » 编程之美 » 正文

[leetcode_49]Anagrams

给定多个字符串,找出那些Anagrams的字符串组。
Anagrams:eat ate eta
这个题 排序,再排序。

int cmp(int a,int b) {
return a < b;
}
struct Item {
int index;
string val;
};
int cmpitem(Item a,Item b) {
return a.val < b.val;
}
class Solution {
public:
vector anagrams(vector &strs) {
vector strs_cpy;
strs_cpy.clear();
for(int i = 0;i < strs.size();i++) {
Item item;
item.index = i;
item.val = strs[i];
sort(item.val.begin(),item.val.end(),cmp);
strs_cpy.push_back(item);
}
sort(strs_cpy.begin(),strs_cpy.end(),cmpitem);
vectorans;
ans.clear();
int index = 0;
for(int i = 1;i < strs_cpy.size();i++) {
if(strs_cpy[i].val == strs_cpy[index].val) {
if(i – index == 1) {
ans.push_back(strs[strs_cpy[index].index]);
}
ans.push_back(strs[strs_cpy[i].index]);
}
else {
index = i;
}
}
return ans;
}
};

发表评论