码迷,mamicode.com
首页 > 其他好文 > 详细

(字符串)字符串的删除、复制、替换

时间:2015-04-29 23:05:13      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

题目要求:

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

假设将空格替换为%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]=\0;

    // 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;
}

运行结果:

技术分享

(字符串)字符串的删除、复制、替换

标签:

原文地址:http://www.cnblogs.com/AndyJee/p/4467585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!