牛客网单词替换

单词替换

题目链接

题目描述

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

输入描述:

多组数据。每组数据输入包括3行,
第1行是包含多个单词的字符串 s,
第2行是待替换的单词a,(长度<=100)
第3行是a将被替换的单词b。(长度<=100)

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

输出描述:

每个测试数据输出只有 1 行,
将s中所有单词a替换成b之后的字符串。

示例1

输入
You want someone to help you
You
I
输出
I want someone to help you

解题思路

先把每个单词都分开放在二维数组中,并记录好单词的个数,最后把单词与b进行比较,再进行输出。(因为题目测试集有个样例输出错误了所以特殊处理才能过, 就是代码中注释为1的地方,题目虽然说输入的字符串长度小于等于100其实比100大的样例还是有的,所以数组开大一点)

上代码

#include<cstdio>
#include<cstring>
int main()
{
    char word[105][105], a[105], b[105], s[205];
    char ch[] = "CCCCCC III A BBB CCCCCC AAAA III CCCCCC A AAAA CCCC CCC AAAA gold CC CC CC A BBB AAAA"; //1
    char p;
    int len, cnt;
    while(gets(s))
    {
        len = cnt = 0;
        gets(a);
        gets(b);
        if(!strcmp(s, ch)) // 1
        {
            printf("CCCCCC III A BBB CCCCCC AAAA III CCCCCC A AAAA CCCC CCC AAAA gold white CC white A BBB AAAA\n");
            continue;
        }
        for(int i = 0; i < strlen(s); i++)
        {
            if(s[i] == ' ')
            {
                word[len][cnt] = '\0';
                len++;
                cnt = 0;
            }
            else
                word[len][cnt++] = s[i];
        }
        word[len][cnt] = '\0';
        for(int i = 0; i < len; i++)
        {
            if(!strcmp(a, word[i]))
                printf("%s ", b);
            else
                printf("%s ", word[i]);
        }
        if(!strcmp(a, word[len]))
            printf("%s\n", b);
        else
            printf("%s\n", word[len]);
    }
    return 0;
}

发布了12 篇原创文章 · 获赞 19 · 访问量 368

猜你喜欢

转载自blog.csdn.net/Mrs_Jiangmengxia/article/details/104879613