万万没想到之聪明的编辑

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 11:40   11   0

题目链接
双指针算法可以在O(n)内删除字符串的某一元素(从前到后扫一遍)
i,j是每次向后推进一位,如果满足条件就j–

#include<bits/stdc++.h>
using namespace std;

const int N=1e6+10;
char str[N];
int main(){
 int n;
 cin>>n;
 while(n--){
  cin>>str;
  int j=0;
  for(int i=0;str[i];i++){
   str[j++]=str[i];   //j还没用 
   if(j>=3&&str[j-1]==str[j-2]&&str[j-2]==str[j-3]) j--;
   if(j>=4&&str[j-1]==str[j-2]&&str[j-3]==str[j-4]) j--;
  }
  str[j]='\0';
  cout<<str<<endl;
 }
} 
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP