剑指offer刷题(2)

来源:互联网 发布:数字报软件 编辑:程序博客网 时间:2024/04/29 05:28

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路
如果从前往后进行遍历,那么每次找到一个空格,则需要添加两个字节来进行替换,我们采用先对字符串进行遍历,查找字符串中的空格的个数,然后对新的字符串进行长度的计算,然后从后往前进行替换,每遇到一个空字符,然后进行替换。
class Solution {public:void replaceSpace(char *str,int length) {if(str==NULL||length<0){return ;}int oldnumber=0;int numbers=0;int newnumber=0;int i=0;int j=0;int oldlength;int newlength;while(str[i]!='\0'){oldnumber++;if(str[i]==' '){numbers++;}i++;}newnumber=oldnumber+numbers*2;if(newnumber>length)return ;oldlength=oldnumber;newlength=newnumber;while(oldlength>=0&&oldlength<newlength){if(str[oldlength]==' ')                {                     str[newlength--]='0';                     str[newlength--]='2';                     str[newlength--]='%';                                                          }               else //不是空格就把pOldlength指向的字符装入pNewlength指向的位置               {                    str[newlength--]=str[oldlength];                                  }             oldlength--;             }}};


0 0
原创粉丝点击