2 条题解
-
2
可以发现输入过程相当于把字母存入栈内,删除操作相当于弹出栈顶元素,可以分别用栈记录大写和小写字母的输入,读到删除操作弹出栈顶元素即可。
#include<bits/stdc++.h> using namespace std; char s[1000005]; char s1[1000005]; int main() { int t; cin >> t; while(t--) { stack<int>o,p;//分别记录大小写 scanf("%s",s); int l1=strlen(s); int num=0; for(int i=0;i<l1;i++) { if(s[i]=='b')//读到删除操作 { if(o.size())//操作之前要判断栈是否为空,否则会运行错误(RE) { s[o.top()]='0';//删除字母打上标记 o.pop(); } } else if(s[i]=='B')//同上 { if(p.size()) { s[p.top()]='0'; p.pop(); } } else if(s[i]>='a'&&s[i]<='z')//压入栈 { o.push(i); } else { p.push(i); } } for(int i=0;i<l1;i++)//输出 { if(s[i]!='0'&&s[i]!='B'&&s[i]!='b')cout <<s[i]; } cout <<'\n'; } }
信息
- ID
- 1017
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 63
- 已通过
- 19
- 上传者