题目传送门

题意:

输入一段字符串,字符串中连续的三个相同的字符可以消去,消去后剩下的左右两段字符串拼接,求最多可消去次数。

输入:ATCCCTTG   输出:2

ATCCCTTG(消去CCC)——>ATTTG(消去TTT)——>AG

题解:

签到题,用栈模拟即可。

牛客多校训练第八场G.Gemstones(栈模拟)-LMLPHP

Code:

用栈模拟:

 /*7ms*/
1 #include<bits/stdc++.h>
using namespace std;
const int M=1e5+;
int main()
{
string str;
while(!(cin>>str).eof()){
char a[M]={};
int head=,sum=;
a[++head]=str[];
a[++head]=str[];
for(int i=;i<str.size();i++)
{
a[++head]=str[i];
if(a[head]==a[head-]&&a[head]==a[head-])
head-=,sum++;
}
cout<<sum<<endl;
}
return ;
}

直接string模拟:

 /*68ms*/
1 #include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
cin>>str;
int len=str.length(),sum=;
for(int i=;i<str.length()&&str.length()>=;i++){
if(str[i]==str[i+]&&str[i]==str[i+]){
sum++;
str.erase(str.begin()+i+);
str.erase(str.begin()+i+);
str.erase(str.begin()+i);
i=max(i-,);
i--;
}
}
cout<<sum<<endl;
return ;
}
05-28 19:04