【题目】
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
【思路】
-
先遍历str一次,记录空格的个数。
-
再计算新的字符长度,即原长度length加上把空格替换成“%20”所需的长度(替换长度只需把空格的个数乘上2,而不是3,因为原长度length中空格已经占一位)。
-
最后从后往前遍历str,并用新的字符长度做下标。
【代码】
class Solution {
public:
void replaceSpace(char *str, int length) {
int spacenum = 0;
int newlen = 0;
for (int i = 0; i < length; i++) {
if (str[i] == ' ') {
spacenum++;
}
}
if (!spacenum) return; //没有空格就结束返回
newlen = length + spacenum * 2; //新长度
newlen--; //一定要加,新下标是从0到newline-1
for (int i = length - 1; i >= 0; i--) {
if (str[i] == ' ') {
str[newlen--] = '0';
str[newlen--] = '2';
str[newlen--] = '%';
}
else {
str[newlen--] = str[i];
}
}
}
};