zoukankan      html  css  js  c++  java
  • 【基础题】字符串替换

    问题 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

    祝你早日攒够失望,然后开始新的生活。
  • 相关阅读:
    学习路线
    环境搭建时用到的文档
    商城技术重点分析
    svn 忽略文件
    实用的css3 学习笔记
    转载 《AngularJS》5个实例详解Directive(指令)机制
    php 单例设计模式 example
    html5 图片转base64预览显示
    curl返回常见错误码
    jquery的end(),addBack()方法example
  • 原文地址:https://www.cnblogs.com/LuRenJiang/p/6972925.html
Copyright © 2011-2022 走看看