第25节 吐泡泡(栈)
第25节 吐泡泡
小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。
两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。小气泡和大气泡不会产生任何变化的。)
例如:ooOOoooO经过一段时间以后会变成oO。
输入描述:
数据有多组,处理到文件结束。
每组输入包含一行仅有’O’与’o’组成的字符串。
输出描述:
每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。
示例1
输入
ooOOoooO
输出
oO
说明
自左到右进行合并
备注:
对于100%的数据,
字符串的长度不超过100。
#include
using namespace std;
string st;
char b[200];
stack<char>ss;
int main()
{//freopen("test.txt","r",stdin);//while(~scanf("%s",&st))while(cin>>st){int n=st.size();if(n==0) cout<<endl;else if(n==1) cout<<st<<endl;else{ss.push(st[0]);for(int i=1;i<n;i++){if(ss.empty()) ss.push(st[i]);else if(ss.top()==st[i]){ss.pop();if(st[i]=='o')//这里解决Ooo的情况{st[i]='O';i--;}}else ss.push(st[i]);}int t=ss.size();int j=1;while(!ss.empty()){b[j++]=ss.top();ss.pop();}for(int i=t;i>=1;i--){printf("%c",b[i]);}cout<<endl;}}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
