https://ac.nowcoder.com/acm/contest/888/G
给一个字符串 3个连续且相同的能够消去 问这个字符串最多消去几次
直接模拟栈 入栈之和如果发现和栈下面的两个都相同 这三个都出栈
注意不要用stl的栈 因为不好找stack[top--] 手写一个栈就好
代码抄的咖啡鸡的 圈粉了 代码写的真好看
#include<algorithm>
#include<iostream>
#include<vector>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<ctime>
#include<map>
#include<stack>
#include<queue>
#include<set>
#include<cstring>
using namespace std;
const int maxn = 5e5 + 5;
typedef long long ll;
char s[maxn], t[maxn];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
scanf("%s", s);
int n = strlen(s);
int ans = 0;
int tmp = 0;
for (int i = 0; i < n; i++) {
t[++tmp] = s[i];
if (t[tmp] == t[tmp - 1] && t[tmp] == t[tmp - 2]) {
ans++;
tmp -= 3;
}
}
cout << ans << endl;
return 0;
}
//1 1 2 3 1+1+1+1+1+2+2+2+3+3
//1 2 1 3 1+1+1+1+2+2+2+2+3+3







Comments | NOTHING