题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:一个空格(‘ ’)占一个位置,‘’%20‘’占3个位置,因此替换过程中字符串的长度变化和元素移动是关键。
先遍历字符串,确定新的字符串长度,在从后向前移动元素。
Answer:
void replaceSpace(char *str,int length) {
int num = 0;
for (int i = 0; i < length; i++) {
if (str[i] == ' ')
num++;
}
int origin = length-1;
if (num != 0) {
length = length + num * 2;
int current = length-1;
while (origin<current) {
if (str[origin] != ' ') {
str[current] = str[origin];
current--;
origin--;
}
else {
str[current--] = '0';
str[current--] = '2';
str[current--] = '%';
origin--;
}
}
}
}