题目描述
对于输入的字符串,从左到右扫描字符串,如果存在由三个以上(包括三个)连续相同字符组成的子串,就将这个子串从原串中去掉,并将原有字符串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何子串
输入描述:
输入的字符串
输出描述:
最后剩下的子串
示例1
输入
AAABCCDDDCB
输出
BB
说明
这道题目有点问题,是出现三次就删除,不是三次以上。
这道题可以用开两个字符串的方法解决,每次维护答案字符串res, 使得res不存在三个以上相同的字符
#include <iostream>
#include <cstring>
using namespace std;
const int N = 10000;
int main()
{
string str,res;
cin>>str;
for(int i=0;i<str.size();i++){
if(res.size()>=2 && res[res.size()-1]==
res[res.size()-2] && res[res.size()-1]==str[i]){
res.pop_back();
res.pop_back();
//while(i+1<str.size() && str[i]==str[i+1]) i++;
}
else{
res+=str[i];
}
}
cout<<res<<endl;
}