题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.
则经过替换之后的字符串为We%20Are%20Happy。
思路
w | e | A | r | e | H | a | p | p | y | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
w | e | % | 2 | 0 | A | r | e | % | 2 | 0 | H | a | p | p | y |
- 首先统计字符串中字符空格个数
- 新字符串的长度 = 原来字符串的长度+(空格个数)× 2
- 设两个变量
- 第一个指向旧字符串的最后一个字符:i
- 第二个指向新字符串的最后一个字符:j
- 循环体内:
- 当i指向的不为空时:新字符串的值等于旧字符串的值:str[j–] = str[i–]
- 否则
- 将空格替换%20
- str[j–] = ‘0’;str[j–]= ‘2’;str[j–]=’%’;i–
- 将空格替换%20
class Solution {
public:
void replaceSpace(char *str,int length) {
if(length <= 0) return;
int space = 0;
for(int i = 0; i < length; i++)
if(str[i] == ' ') space++;
int i = length - 1;
int j = length + space * 2;
str[j--] = '\0';
while(i >= 0){
if(str[i] != ' ') str[j--] = str[i--];
else{
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
i--;
}
}
}
};