poj2944:单词替换

好几天没更了,这几天先是刚搬完砖,玩了一整天,接着乘火车回家,所以没做题。然后今晚做了这道简单题,最开始还WA了好几次,卧槽。。。

怒了直接推倒重写。。。

下面是题目

总时间限制: 1000ms 内存限制: 65536kB

描述

输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入

输入包括3行,

第1行是包含多个单词的字符串 s,

第2行是待替换的单词a,(长度<=100)

第3行是a将被替换的单词b。(长度<=100)



s, a, b 最前面和最后面都没有空格.

输出

输出只有 1 行,

将s中所有单词a替换成b之后的字符串。

样例输入

You want someone to help you

You

I

样例输出

I want someone to help you

这种字符串的题目,如果没什么算法含量的话,一定要小心又小心。。。

特别匹配的时候一定要注意到此刻匹配到哪个位置了,一旦错了就蛋碎了。。。

今晚傻逼地WA了几次,还完全不知道问题在哪里。。。重新写了一遍才勉强A掉了。。。

没什么技术含量,仔细一点就肯定能A的题目,直接贴代码:

#include <iostream>

#include <stdio.h>

#include <cstring>

using namespace std;





char s[102],a[102],b[102];



int main()

{

    cin.getline(s,101);

    cin.getline(a,101);

    cin.getline(b,101);

    int len = strlen(s);

    for(int i = 0; i < len; i ++)

    {

        bool f = false;

        int j = 0;

        for(; a[j] != '\0' && i +j< len; j ++)

        {

            if(s[i+j] == a[j])

                ;

            else

                break;

        }

        if( (i+j == len && a[j]=='\0') || (s[i+j] ==' ' && a[j] == '\0') )

            f = true;

        if(f)

        {

            printf("%s",b);

            i+=j;

            if(i<len)

                printf(" ");

        }

        else

        {

            for(; i < len; i ++)

            {

                if(s[i] != ' ')

                    printf("%c", s[i]);

                else

                {

                    printf(" ");

                    break;

                }

                

            }

        }

        

    }

    printf("\n");

}

 

你可能感兴趣的:(poj)