A-吐泡泡

链接:https://www.nowcoder.com/acm/contest/74/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

 

小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。(是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)
例如:ooOOoooO经过一段时间以后会变成oO。
牛客网2018年全国多校算法寒假训练营练习比赛(第二场)

输入描述:

数据有多组,处理到文件结束。
每组输入包含一行仅有'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;
}
A题C++

相关文章: