#1082 : 然而沼跃鱼早就看穿了一切



fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼(“marshtomp”,不区分大小写)。为了使句子不缺少成分,统一换成 “fjxmlhx” 。

输入

输入包括多行。

每行是一个字符串,长度不超过200。

一行的末尾与下一行的开头没有关系。

输出

输出包含多行,为输入按照描述中变换的结果。

样例输入
The Marshtomp has seen it all before.
marshTomp is beaten by fjxmlhx!
AmarshtompB
样例输出
The fjxmlhx has seen it all before.
fjxmlhx is beaten by fjxmlhx!
AfjxmlhxB

#include <iostream>
#include <string.h>
using namespace std;
char s[201];
int main() {
while (gets(s)) {
if(strlen(s)>=8) {
for (int i=0; i<strlen(s); i++) {
int k=0,flag=0;
k=i;
if(s[k]!=' '&&(s[k]=='m'||s[k]=='M')) {
if(s[k+1]!=' '&&(s[k+1]=='a'||s[k+1]=='A')) {
if(s[k+2]!=' '&&(s[k+2]=='r'||s[k+2]=='R')) {
if(s[k+3]!=' '&&(s[k+3]=='s'||s[k+3]=='S')) {
if(s[k+4]!=' '&&(s[k+4]=='h'||s[k+4]=='H')) {
if(s[k+5]!=' '&&(s[k+5]=='t'||s[k+5]=='T')) {
if(s[k+6]!=' '&&(s[k+6]=='o'||s[k+6]=='O')) {
if(s[k+7]!=' '&&(s[k+7]=='m'||s[k+7]=='M')) {
if(s[k+8]!=' '&&(s[k+8]=='p'||s[k+8]=='P')) {
i+=7;//减少时间复杂度的关键句,注意,此处如果i+=8的话会WA,我觉得是因为42行代码会使数组越界造成的 
flag=1;
}
}
}
}
}
}
}
}
}
if(flag==1) {
s[k]='f';
s[k+1]='j';
s[k+2]='x';
s[k+3]='m';
s[k+4]='l';
s[k+5]='h';
s[k+6]='x';
for (int n=k+7; n<strlen(s)-2; n++) {
s[n]=s[n+2];
}
s[strlen(s)-2]='\0';
}
}
cout<<s;
} else {
cout<<s;
}
cout<<endl;
}
return 0;
} 挺简单的一道题,注意c语言中如果输入带空格的字符串有gets(s) 和scanf("%[^\n]",s)两种方式。

猜你喜欢

转载自blog.csdn.net/qq_15020543/article/details/80801073