题目链接
题意
一个序列由小写o和大写o组成,两个相邻的小写o会融成一个大写O,两个相邻的大写O会抵消。
例如:ooOOoooO经过一段时间以后会变成oO。
思路
- 根据题意使用栈进行模拟
参考代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string aa;
while(cin>>aa)
{
stack<char> bb;
for(int i=0; i<aa.size(); i++)
{
if(!bb.empty())
{
if(bb.top()==aa[i])
{
if(aa[i]=='O')
{
bb.pop();
}
else
{
bb.pop();
if(!bb.empty()&&bb.top()=='O')
{
bb.pop();
}
else
{
bb.push('O');
}
}
}
else
bb.push(aa[i]);
}
else
{
bb.push(aa[i]);
}
}
string cc;
int n=0;
while(!bb.empty())
{
cc[n]=bb.top();
bb.pop();
n++;
}
for(int i=n-1;i>=0;i--)
{
cout<<cc[i];
}
cout<<endl;
}
}