时间限制:
1000ms
单点时限:
1000ms
内存限制:
256MB
-
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
描述
fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼(“marshtomp”,不区分大小写)。为了使句子不缺少成分,统一换成 “fjxmlhx” 。
输入
输入包括多行。
每行是一个字符串,长度不超过200。
一行的末尾与下一行的开头没有关系。
输出
输出包含多行,为输入按照描述中变换的结果。
思路:存储两个字符串,一个是原始的str1,一个是将原始字符串中的大写字母都变成小写字母的字符串str2,每次匹配都是用str2去匹配,然后得到位置,然后替换的时候是str1和str2相同位置都替换掉,最后输出str1即可。
c++代码(0ms)
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main(){
char str[200];
char lower_str[200];
string s1="marshtomp";
string s2="fjxmlhx";
while(cin.getline(str,200)){
string tmp(str); //原始字符串
//char *s0=strlwr(str); //将大写字符串转化为小写
string s=tmp; //都为小写的原始字符串
for(int i=0; i<s.size(); i++){
s[i] = tolower(s[i]);
}//for
int len=s.length(); //len存储要求的字符串长度
int position=s.find(s1);
while(position !=-1){ //说明字符串中有要替换的
tmp = tmp.replace(position, 9, s2);
s = s.replace(position, 9, s2);
position=s.find(s1);
}
cout<<tmp<<endl;
}//while
return 0;
}
一开始用strlwr 函数报错,编译不过,改成用tolower就可以了