class Solution {
public:
vector<string> removeAnagrams(vector<string>& words) {
// 2个辅助数组
// 始终保持aux1为存储,当前遍历下标i的,i-1下标,对应字符串的每个字符对应的数字组成的数组
vector<int> aux1(0);
vector<int> aux2(0);
// 先填充aux1
string str = words[0];
for(int j = 0; j < str.size(); j++){
aux1.push_back((int)str[j]);
}
// 再排序方便后面比较
sort(begin(aux1), end(aux1));
// 记录返回结果的长度
int len = words.size();
for(int i = 1; i < words.size(); i++){
// 填充aux2
str = words[i];
for(int j = 0; j < str.size(); j++){
aux2.push_back((int)str[j]);
}
sort(begin(aux2), end(aux2));
// 只处理长度相同的情况
if(aux1.size() == aux2.size()){
// 记录是否符合
bool flag = true;
for(int k = 0; k < aux1.size(); k++){
if(aux1[k] != aux2[k]){
// 如果不符合直接退出
flag = false;
break;
}
}
// 如果符合,标记移除位置
if(flag){
words[i] = "";
len--;
}
}
// 每次交换辅助数组
swap(aux1, aux2);
// 方便下次循环使用
aux2.clear();
}
vector<string> ans(len);
// 将合法的结果保存ans
int ind = 0;
for(int i = 0; i < words.size(); i++){
if(words[i] == ""){
continue;
}
ans[ind++] = words[i];
}
return ans;
}
};
2273. 移除字母异位词后的结果数组
最新推荐文章于 2024-05-18 15:56:15 发布