程序设计思维与实践 Week10 限时大模拟 (3/4/数据班)
A - 签到题
问题分析
根据题面,执行的操作次数在1E1000级别,隐含的意思是把全部的ST删除
因此,不考虑执行次数,设计程序从左到右删除所有的ST即可。原字符串存到string
后,遍历这个string,最终结果储存到一个栈结构中。栈空取元素入栈,不空,若栈顶是S,字符串位置是T,则弹出栈顶,继续操作。
#include<bits/stdc++.h>
using namespace std;
char c[200000+5];
int main()
{
// gets(c);
scanf("%s",c);
int len=strlen(c);
stack<char>ans;
for(int i=0;i<len;++i){
if(ans.empty()){
ans.push(c[i]);
continue;
}
if(ans.top()=='S'&&c[i]=='T'){
ans.pop();
}
else{
ans.push(c[i]);
}
}
cout<<ans.size()<<endl;
return 0;
}
B - 东东转魔方
这个题参考了别人的解法,就不在这里写了
参考资料链接