zoukankan      html  css  js  c++  java
  • (字符串)字符串的删除、复制、替换

    题目要求:

    给字符数组,要求删除其中的某个字符,并将某个字符替换。

    假设将空格替换为%20,并且原数组大小足够大,只能在原数组操作。

    解题思路:

    删除操作:遍历数组,如果不是删除的字符,则依次写入数组,遇到要删除的字符,则跳过;

    复制/替换操作:复制是指将数组中某个字符复制n次,如b变成bb;是指将字符替换成其他字符或字符串。这种操作的一个思路就是:在遍历数组的过程中,记录要被复制或者替换的字符的个数,然后计算复制或者替换后字符数组的大小,接着从后往前依次将原数组的字符写入,这样就无需进行移位,也不会覆盖原数组。

    参考代码:

    #include <iostream>
    
    using namespace std;
    
    // delete some char, and replace blanket with %20
    void stringDeleteAndReplace(char a[],char del){
    //    int n=sizeof(a)/sizeof(a[0]);
        int len=0;
        int num_rep=0;
        // delete some char and record the num of ' '
        for(int i=0;a[i];i++){
            if(a[i]==' ') num_rep++;
            if(a[i]!=del) a[len++]=a[i];
        }
        a[len]='';
    
        // newlength after deletion and replacement
        int newlength=len+1+2*num_rep;
        int j=newlength-1;
        // from last to first
        for(int i=len;i>=0;i--){
            if(a[i]!=' ') a[j--]=a[i];
            else{
                a[j--]='0';
                a[j--]='2';
                a[j--]='%';
            }
        }
    }
    
    int main()
    {
        char a[100]="This is my name: AndyJee";
        stringDeleteAndReplace(a,'s');
        cout<<a<<endl;
        return 0;
    }

    运行结果:

    tmp

  • 相关阅读:
    第1组 团队Git现场编程实战
    第二次结对编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    2019 SDN上机第二次作业
    2019 SDN上机第一次作业
    软件工程第五次作业
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4467585.html
Copyright © 2011-2022 走看看