2273. 移除字母异位词后的结果数组

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;
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值