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

题目描述:

时间限制: 1000ms
单点时限: 1000ms
内存限制: 256MB

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 
#include 
using namespace std; 
int main(){
    //freopen("t.txt", "r", stdin);
    char t;
    int currentIndex = 0;
    char *target = "marshtomp", *replace = "fjxmlhx", currStr[9];
    while(scanf("%c", &t) != EOF){
        if(t == '\n' && currentIndex != 0){
            for(int i = 0; i < currentIndex; i++)
                printf("%c", currStr[i]);            
            currentIndex = 0;
        }
        if(t < 'A' || (t > 'Z' && t < 'a') || t > 'z')
            printf("%c", t);
        else if(tolower(t) == target[currentIndex]){
            currStr[currentIndex] = t;
            currentIndex++;
            if(currentIndex == 9){
                printf("%s", replace);
                currentIndex = 0;
            }
        }
        else{
            if(currentIndex != 0){
                for(int i = 0; i < currentIndex; i++)
                    printf("%c", currStr[i]);
                currentIndex = 0;
            }
            printf("%c", t);
        }
    }
    return 0;
}


你可能感兴趣的:(hiho)