题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:
首先遍历字符串计算其中的空格数count, 然后从后往前遍历, 遇到字母则往后移动count x 2个位置,遇到空格就count--,并替换为指定字符. (选择从后往前遍历替换,如果从前往后,则每次移动都得移动后面所有字符)
class Solution {
public:
void replaceSpace(char *str,int length) {
int count = 0;
for(int i = 0; i < length; i++) { //统计空格数
if(str[i] == ' ')
count++;
}
for(int i = length-1; i >=0; i--) {
if(str[i] != ' ') //不是空格,直接移动2xcount位
str[i+count*2] = str[i];
else { //为空格,则count--,并插入字符
count--;
str[i+count*2] = '%';
str[i+count*2+1] = '2';
str[i+count*2+2] = '0';
}
}
}
};