题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题意:注意这里有两种意思,一是可以创建新的字符串,二是在原字符串上修改
思路:第一种情况,只要从左到右遍历字符串,将空格换成"%20"即可,第二种,因为替换以后字符串长度会变化,所以要注意原字符串的长度是否足够。针对第二种解题步骤如下:
一、遍历一遍字符串,找到现字符串的长度和空格长度,这样就可以计算出替换以后的新字符串的长度;
二、定义两个指针,一个指向新字符串的最后,一个指向现有的最后,注意现有字符串中的' '也要复制过去;
三、从右往左遍历现有字符串,将非空格的字符复制到新的位置,遇到空格替换即可。
代码如下:
1 class Solution { 2 public: 3 void replaceSpace(char *str,int length) 4 { 5 if(str==nullptr||length<=0) return; 6 int oldLen=0; 7 int numOfBlank=0; 8 int i=0; 9 while(str[i] !='