使用stack容器
#include <iostream>
using namespace std;
#include <stack>
#include <string>
void solve()
{
string s;
stack<char> v;
long long i;
while(cin >> s)
{
for(i = 0 ; i < s.size() ; ++i)
{
if(v.empty())//如果容器为空则将数据插入容器
v.push(s[i]);
else
{
int flag = 1;
while(!v.empty() && s[i] == v.top())
//如果容器不为空 并且当前的字符和栈顶的字符相等
{
v.pop();//弹出栈顶
if(s[i] == 'o')//同为小泡泡则为当前字符赋值成大泡泡
s[i] = 'O' ;
else//如果同为大泡泡则炸掉
{
flag = 0 ;
break ;
}
}
if(flag)
v.push(s[i]);
}
}
s.clear();//将s清空
while(!v.empty())//当前容器中是无法清除的泡泡
{
s += v.top();
v.pop();
}
for(i = s.size()-1 ; i >= 0 ; --i)//因为栈的特点是先进后出 所以反向输出s
cout << s[i] ;
cout << "\n" ;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
}