#include <bits/stdc++.h> using namespace std; // 双指针的解法:i,j指针都从头开始依次递增,但当j超过三或四的时候,就需要对j的前三位或前四位进行判断了。 //2,如果前三位或者前四位符合了AAA或者AABB的形式,说明新插入的元素(A或者B)不能要,那么我们让j--,然后让i指针指向的下一个元素覆盖这个j位置的元素就可以满足要求了。 //3,i指针始终递增,依次处理原字符串中的每一个元素;j指针则负责保证j位置之前的部分是符合要求的。最后我们删掉原字符串中j位置之后的多余元素,就可以得到我们想要的符合要求的字符串了。 int main() { int n; cin>>n; string s; while(n--) { cin>>s; int j=0; for(int i=0;i<s.size();i++) { s[j++]=s[i]; //j还没用 if(j>=3&&s[j-1]==s[j-2]&&s[j-2]==s[j-3]) j--; if(j>=4&&s[j-1]==s[j-2]&&s[j-3]==s[j-4]) j--; } s.erase(s.begin()+j,s.end()); cout<<s<<endl; } }