描述
小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。
两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。 (是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。) 注意:自左到右进行合并. 例如:ooOOoooO经过一段时间以后会变成oO。输入
数据有多组,处理到文件结束。
每组输入包含一行仅有'O'与'o'组成的字符串。输出
每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。
样例输入
ooOOoooO
样例输出
oO
思路
用栈模拟就好,水题
代码
#include#define ll long longusing namespace std;void check(char ans[], int len){ if(len == 0) return; while(ans[len] == ans[len-1]) { ans[len] = '\0'; len--; if(ans[len] == 'o') ans[len] = 'O'; else ans[len--] = '\0'; if(len <= 0) return; }}int main(){ char s[102]; while(~scanf("%s", s)) { char ans[102]; int f = 1; while(f) { memset(ans,0,sizeof(ans)); ans[0] = s[0]; int j = 1; f = 0; int len = strlen(s); for(int i = 1; i < len; i++) { int j = strlen(ans); ans[j] = s[i]; check(ans, j); } memset(s,0,sizeof(s)); for(j = 0; ans[j] != '\0'; j++) s[j] = ans[j]; s[j] = '\0'; } printf("%s\n", s); } return 0;}