美文网首页
高效替换字符串中的空格

高效替换字符串中的空格

作者: 913c9536e19a | 来源:发表于2016-04-17 14:42 被阅读141次

请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入"We are happy.",则输出"We%20are%20happy."。

看到题目之后的第一感觉


看到题目后,第一个想法是从头到尾扫描字符串,遇到一个空格,就把空格替换成%20,但是这样的话,偏后面的字符就没碰到一个空格,就要移动一次,如果字符串长度为n,那么移动一次的时间复杂度为O(n),那么对于含有O(n)个空格字符的字符串而言的时间复杂度是O(n^2)。会不会有更快的方法?

时间复杂度为O(n)的方法


我们可以先遍历一次字符串,统计出空格的数量,还有非空格的数量,那么可以每有一个空格,则替换之后的字符串比原字符串多了两个字符,那么替换后的字符串长度为:非空格的数量+空格的数量*2。
这样在最后移动的时候,每个字符只需要移动一次。

实现方法


从字符串的后面开始复制和替换,定义两个指针P1,P2。P1指向原字符串的末尾,P2指向替换之后字符串的末尾。接下来向前移动P1,逐个把它的字符复制到P2指向的位置,直到碰到第一个空格为止。碰到空格之后,接下来的操作是:P1继续向前移动,P2则向前移动3格插入"%20"。若P1,P2指向同一位置,表明所有空格都已经替换完毕。


void ReplaceBlank(char string[],int length)//length为字符数组的总容量 { if(string==NULL||length>0) return; //originalLength为字符串string的实际长度 int numberOfBlank=0; int originalLength=0; int i=0; while(string[i]!='\0') { originalLength++; if(string[i]==' ') numberOfBlank++; i++; } //indexOfNew为把空格替换成"%20"之后的总长度 int indexOfNew=originalLength+numberOfBlank*2; if(indexOfNew>length) return; int indexOfOriginal=originalLength; while (indexOfNew>indexOfOriginal) { if(string[indexOfOriginal]!=' ') string[indexOfNew--]=string[indexOfOriginal]; else { string[indexOfNew--]='0'; string[indexOfNew--]='2'; string[indexOfNew--]='%'; } indexOfOriginal--; } }


相关文章

  • 2019-08-04-字符串操作

    一,题目:替换字符串中的空格 替换空格为20% 1,先根据字符串的长度获取空格的个数, 2,根据空格个数确定替换之...

  • 高效替换字符串中的空格

    请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入"We are happy.",则输出"We%20a...

  • Android中string.xml应用

    配置字符串替换 单个字符串替换 使用Context方法,动态替换 多个个字符串替换 配置字符串中的空格

  • NSString

    替换字符串中的内容 取掉字符串的空格 字符串输出

  • 去掉空格、替换字符

    去掉首尾空格 替换字符 (将空格替换为无,即为去掉字符串中所有的空格)

  • 《剑指offer第二版》题5:替换空格

    替换空格 题目:请实现一个函数,把字符串中的每个空格替换成"%20",例如“We are happy.”,则输出“...

  • js实现字符串算法

    字符串算法 替换空格 剑指offer:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为W...

  • Java日记2018-05-25

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

  • 剑指offer-02-替换空格

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

  • 《剑指offer》— JavaScript(2)替换空格

    替换空格 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy...

网友评论

      本文标题:高效替换字符串中的空格

      本文链接:https://www.haomeiwen.com/subject/txpolttx.html