吐泡泡-2018年牛客多校算法寒假训练营练习比赛(第二场)

    科技2024-04-19  4

    题目描述 小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。 两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。 (是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)

    例如:ooOOoooO经过一段时间以后会变成oO。

    输入描述: 数据有多组,处理到文件结束。 每组输入包含一行仅有’O’与’o’组成的字符串。 输出描述: 每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。 示例1 输入 复制 ooOOoooO 输出 复制 oO 说明 自左到右进行合并 备注: 对于100%的数据, 字符串的长度不超过100。

    栈的简单模拟 代码如下:

    #include<bits/stdc++.h> using namespace std; int main() { string a; while(cin>>a) { if(a.length()==1) cout<<a<<endl; else { stack<char>s; s.push(a[0]); for(int i=1;i<a.length();i++) { if(s.empty()) s.push(a[i]); else { if(s.top()==a[i]) { if(s.top()=='O') s.pop(); else { s.pop(); if(!s.empty()) { if(s.top()=='o') s.push('O'); else s.pop(); } else s.push('O'); } } else s.push(a[i]); } } stack<char>s1; while(!s.empty()) { s1.push(s.top()); s.pop(); } while(!s1.empty()) { cout<<s1.top(); s1.pop(); } cout<<endl; } } }
    Processed: 0.024, SQL: 9