[ABC328D] Take ABC 题解

发布时间 2023-11-21 17:36:48作者: merlinkkk

链接

如果只是扫一遍肯定是不行的,所以我们使用一个栈,遇到 C 就判断栈顶的两个元素是不是分别为 BA。这样就能做出来这道题了。

代码

#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;
}