A-吐泡泡
链接: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'组成的字符串。
输出描述:
每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。
示例1
输入
ooOOoooO
输出
oO
说明
自左到右进行合并
备注:
对于100%的数据,
字符串的长度不超过100。
#include<bits/stdc++.h> using namespace std; stack<int>st; void sol(int j) { if(st.empty()) st.push(j); else{ int k=st.top(); if(k==0&&j==0){ st.pop(); sol(1); }else if(k==1&&j==1){ st.pop(); }else st.push(j); } } int main() { char s[105]; while(~scanf("%s",s)){ for(int i=0;s[i]!='\0';i++){ if(s[i]=='o'){sol(0);} else{sol(1);} } stack<char> tt; while(!st.empty())//导出 { int k=st.top();st.pop(); if(k==0) tt.push('o'); else tt.push('O'); } while(!tt.empty()){//输出 char k=tt.top();tt.pop(); printf("%c",k); } printf("\n"); } return 0; }