题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
首先需要统计一下数组的长度以及空格数
这样的话,可以从数组的后面进行前推
第一个指针指向数组的初始结尾处,第二个指针指向新数组(空格替换为%20)的结尾处
当第一个指针指向空格时,第一个指针向前推三个分别为0,2,%
这样可以最大程度上减少移动次数啦。
class Solution {
public:
void replaceSpace(char *str,int length) {
int originnum = 0;
int num = 0;
int i = 0;
//首先需要统计空格数量
while(str[i] !='\0')
{
originnum++;
if(str[i] == ' '){
num++;
}
i++;
}
//替换后的新长度
int newnum = originnum + num * 2;
//只需要将空格地方替换,空位已经空出,不用移动
while(originnum >= 0 && newnum > originnum){
if(str[originnum] == ' '){
str[newnum--] = '0';
str[newnum--] = '2';
str[newnum--] = '%';
}
else{
str[newnum--] = str[originnum];
}
originnum--;
}
}
};