链接:https://www.nowcoder.com/acm/contest/74/A
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。
两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。
(是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)
例如:ooOOoooO经过一段时间以后会变成oO。
输入描述:
数据有多组,处理到文件结束。 每组输入包含一行仅有'O'与'o'组成的字符串。
输出描述:
每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。
栈的简单应用。
#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
string a;
int x;
stack<char>b;
int main()
{
while(cin>>a)
{
while(b.size())
b.pop();
x=a.length();
for(int i=0;i<x;i++)
{
b.push(a[i]);
while(1)
{
if(b.size()<=1)
break;
else
{
char x=b.top();b.pop();
char y=b.top();b.pop();
if(x==y&&x=='o')
{
b.push('O');
//cout<<"变大"<<endl;
}
else if(x!=y)
{
b.push(y);b.push(x);
//cout<<"normal"<<endl;
break;
}
else
{
//cout<<"消失"<<endl;
}
}
}
}
stack<char>c;
while(b.size())
{
char x=b.top();
c.push(x);
b.pop();
}
while(c.size())
{
char x=c.top();
c.pop();
cout<<x;
}cout<<endl;
}
}