替换空格
Posted dreamstick
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换空格相关的知识,希望对你有一定的参考价值。
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
1、很直接的做法:从前往后遍历:遇到空格,就将空格后面的字符往后移动两位。然后将空格替换为%20。(这样子做,每遇到一个空格,其后面的字符都需要移动一次,所以对于一个字符,其移动的次数是其前面空格的个数)
c++:
class Solution { public: void replaceSpace(char *str,int length) { // char * p =str; int i,j; for(i=0;i<length;i++) { if(str[i]==‘ ‘) { for(j=length-1;j>i;j--) str[j+2]=str[j]; str[i]=‘%‘; str[i+1]=‘2‘; str[i+2]=‘0‘; } } } };
2、优化的解法:从后往前遍历:首先计算出将空格替换成%20后,整个字符串的长度,然后从后往前遍历,将字符移动到其最终的位置。(相对于其中第一种解法:每一个自符都最多只要移动一次)
c++:
class Solution { public: void replaceSpace(char *str,int length) { if(str == NULL||length <0) return; int oldlength = 0; int newlength = 0; int space_num = 0; for(int i = 0;str[i]!=‘