题目描述
请实现一个函数,把字符串中的每个空格替换成"%20"
。
你可以假定输入字符串的长度最大是1000。
注意输出字符串的长度可能大于1000。
样例
输入:"We are happy."
输出:"We%20are%20happy."
问题分析
先遍历原数组,知道有多少个空格,然后求出新数组的长度,然后将原数组resize成新数组的大小。定义两个指针,分别指向原数组和新数组的最后一个位置。然后两个指针向前遍历,新数组的指针根据原数组指针指的内容,确定新数组指针指的位置设成什么字符,最终当原数组指针遍历结束后返回str。
代码实现
class Solution {
public:
string replaceSpaces(string &str) {
int len = str.size();
for(char c : str){
if(c == ' ')
len += 2;
}
int i = str.size() - 1;
int j = len - 1;
str.resize(len);
while(i >= 0){
if(str[i] != ' '){
str[j--] = str[i--];
}
else{
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
i--;
}
}
return str;
}
};