题目
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy." 限制:
0 <= s 的长度 <= 10000
思路
字符串
采用字符串拼接的方法,坏处是这样比较浪费空间:
class Solution {
public:
string replaceSpace(string s) {
for(int i = 0; i < s.size(); i++){
if(s[i] == ' '){
int len = s.size();
s = s.substr(0,i) + "%20" + s.substr(i + 1,len);
}
}
return s;
}
};
双指针
用双指针完成,先进行扩容,使字符串的容量可以容下空格替换为"02%"。
然后两个指针i,j一个指向原字符串一个指针新资产,从后往前遍历,遇到空格就用"02%"替换,否则直接复制下来即,指针重合时遍历结束;
class Solution {
public:
string replaceSpace(string s) {
int len = s.size();//记录现在长度
//扩容
for(int i = 0; i < len; i++){
if(s[i] == ' ') s += "00";
}
//双指针
for(int i = s.size() - 1,j = len - 1;j < i;j--){
if(s[j] == ' ') {
s[i--] = '0';
s[i--] = '2';
s[i--] = '%';
}
else
s[i--] = s[j];
}
return s;
}
};