字符串替换空格

字数 260阅读 43
题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

注意

原来一个空格字符,替换之后,变成‘%’,‘2’,‘0’三个字符,字符串长度会变长。如果是在原来的字符串上做替换,要保证原来的字符串有足够的空余内存。

从前向后,时间复杂度为O(n^2)

从头到尾扫描字符串,每次碰到空格字符时做替换,空格后所有的字符向后移2个字节。

从后向前,时间复杂度O(n)

先遍历一遍字符串,求出所有空格的总数和字符串实际长度。计算出替换之后的字符串的总长度,从字符串最后开始复制和替换,包括‘\0’。

class Solution {
public:
    void replaceSpace(char *str, int length) {
        if (str == NULL || length <= 0)
            return;

        int blanksize = 0;  //空格数
        int len=0;          //数组实际长度
        for (int i = 0; str[i]!='\0'; i++)//注意此处判断条件不是i<length
        {
            len++;
            if (str[i] == ' ')
                blanksize++;
        }

        int newLen = len + blanksize * 2;
        if (newLen > length)
            return;
        int j = newLen;
        for (int i = len; i >= 0; i--)
        {
            if (str[i] != ' ')
                str[j--] = str[i];
            else
            {
                str[j--] = '0';
                str[j--] = '2';
                str[j--] = '%';
            }
        }
    }
};

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
  • 在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台...
  • 本节主要讲如何打开对方的心锁和运用该方法该注意的问题。了解了对方的兴趣爱好,喜怒哀乐之后,投其所好,走进对方的内心...
  • 初读这本书时,正处于暑期开始的躁动期,村上春树的充满平静思考的文字也没能把聒噪的心给降下来。暑期伊始忙于浏览各种找...
  • 大年初一是一年的始端,对中国人而言他有不一样的意义。一个新的缘起,一个不同的开端。在过去大家会在这一天守岁,守岁顾...