使用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();
}