试题链接:点击打开链接
小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡
"O"
,小泡泡
"o"
。
两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。
(是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)
例如:ooOOoooO经过一段时间以后会变成oO。
输入描述:
数据有多组,处理到文件结束。
每组输入包含一行仅有'O'与'o'组成的字符串。
输出描述:
每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。
说明
自左到右进行合并
关键在于从左右到合并,即出现oo或OO时要从开头进行下一次循环,数组模拟即可
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
char s[105];
int main()
{
int m, i;
while(~scanf("%s", s))
{
m = strlen(s);
int j = 0;
while(1)
{
for(i = 0; i < m-1; i++)
{
if(s[i] == 'o' && s[i+1] == 'o' )
{
s[j++] = 'O';
i += 2;
break;
}
else if(s[i] == 'O' && s[i+1] == 'O' )
{
i += 2;
break;
}
else s[j++] = s[i];
}
for(i; i<m; i++) s[j++] = s[i];
s[j] = '\0';
if(j == m) break;
m = j, j = 0;
}
printf("%s\n", s);
}
return 0;
}