【基础题】字符串替换

问题 X: 字符串替换

时间限制: 1 Sec  内存限制: 128 MB
[提交][状态][讨论版]

题目描述

编写一个程序实现将字符串中的所有"you"替换成"we"

输入

输入包含多行数据

每行数据是一个字符串,长度不超过1000
数据以EOF结束

输出

对于输入的每一行,输出替换后的字符串

样例输入

you are what you do

样例输出

 we are what we do

思路:

C的思路(比较麻烦)

把'y','o','u'存到一个字符数组里,再把输入的字符串放到一个字符数组里,然后用指针遍历字符串,如果对应的字符相同,则++,不相同则置为0,如果加到3则把"you"换换成"we",然后让字符串数组的各个字符往前替换。

用C++的话直接写就行了

C代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char s[1000];
    char ss[3];
    int i=0,j=0,k;
    ss[0]='y';
    ss[1]='o';
    ss[2]='u';
    char *p1,*p2;
    p2=ss;
    while(gets(s)!=NULL){
        p1=s;
        i=0;
            while(*(p1+i)!=''){
            if(*(p1+i)!=*(p2+j)){
                j=0;
             }
            if(*(p1+i)==*(p2+j)){
                 j++;
             }

             if(j==3){
                *(p1+i-1)='e';
                *(p1+i-2)='w';
                k=i;
                while(*(p1+k)!=''){
                    *(p1+k)=*(p1+k+1);
                    k++;
                }
             }
             i++;
            }
        printf("%s
",s);

    }
    return 0;
}

C++代码如下

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
void string_place(string &s1,string &s2,string &s3);
int main()
{
    string s1,s2="you",s3="we";
    while(getline(cin,s1)){
        string_place(s1,s2,s3);
        cout<<s1<<endl;
    }

    return 0;
}
void string_place(string &s1,string &s2,string &s3){
    string::size_type pos=0;
    string::size_type a=s2.size();
    string::size_type b=s3.size();
    while((pos=s1.find(s2,pos))!=string::npos){
        s1.replace(pos,a,s3);
        pos+=b;
    }

}

总结:

1)C当要输入多组测试数据,且要输入的是字符数组,且字符串中带空格时用

while(gets(s)!=NULL){}

2)C++连续输入多个肯能带空格的字符串

传送门:http://blog.csdn.net/wyh7280/article/details/46957135(注:该博主写的第二个方法我写时出现了error,各位知道咋回事的大佬麻烦说一下)

 3)C++字符串替换的两种方法:

传送门:http://blog.csdn.net/crazyer2010/article/details/9063847

祝你早日攒够失望,然后开始新的生活。
原文地址:https://www.cnblogs.com/LuRenJiang/p/6972925.html