如果只是扫一遍肯定是不行的,所以我们使用一个栈,遇到 C
就判断栈顶的两个元素是不是分别为 B
和 A
。这样就能做出来这道题了。
代码
#include<bits/stdc++.h>
using namespace std;
string s;
char stk[200010];
int main() {
cin>>s;
int n=s.size(),p=0;// 字符串长度和栈顶指针
for(int i=0;i<n;i++){
stk[++p]=s[i];
if(p>=3){
if(stk[p]=='C'&&stk[p-1]=='B'&&stk[p-2]=='A')
p-=3;
}
}
for(int i=1;i<=p;i++) cout<<stk[i];
return 0;
}
标签:ABC,ABC328D,题解,栈顶,stk,int,Take
From: https://www.cnblogs.com/IOIAKmerlin/p/17832482.html