首页 > 其他 > 详细

替换字符串中的空格

时间:2016-06-06 01:31:12      阅读:236      评论:0      收藏:0      [点我收藏+]

题目描述:实现一个函数,把字符串中的每个空格替换成 “%20”


例如: 输入“We are happy.”  输出“We%20are%20happy.”



分析:每次遇到空格后,把空格后所有的字符都向后移动两个位置,于是会多出三个位置,此时将该三个位置替换成字符串“%20”,如下图:


技术分享


很显然,这种方法的时间复杂度为 O(n^2),因此不适合采用!


方法二:

技术分享技术分享

技术分享

技术分享技术分享


根据这种思路,代码应该很好写了:


/*length 为字符数组string的总容量*/
void ReplaceBlank(char string[], int length)
{
    if(string == NULL && length <= 0)
        return;

    /*originalLength 为字符串string的实际长度*/
    int originalLength = 0;
    int numberOfBlank = 0;
    int i = 0;
    while(string[i] != ‘\0‘)
    {
        ++ originalLength;

        if(string[i] == ‘ ‘)
            ++ numberOfBlank;

        ++ i;
    }

    /*newLength 为把空格替换成‘%20‘之后的长度*/
    int newLength = originalLength + numberOfBlank * 2;
    if(newLength > length)
        return;

    int indexOfOriginal = originalLength;
    int indexOfNew = newLength;
    while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal)
    {
        if(string[indexOfOriginal] == ‘ ‘)
        {
            string[indexOfNew --] = ‘0‘;
            string[indexOfNew --] = ‘2‘;
            string[indexOfNew --] = ‘%‘;
        }
        else
        {
            string[indexOfNew --] = string[indexOfOriginal];
        }

        -- indexOfOriginal;
    }
}


本文出自 “11408774” 博客,请务必保留此出处http://11418774.blog.51cto.com/11408774/1786209

替换字符串中的空格

原文:http://11418774.blog.51cto.com/11408774/1786209

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!