剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
空间复杂度O(N)法
class Solution {
public:
string replaceSpace(string s) {
string result = "";
for(char c : s){
if(c == ' ') result += "%20";
else result += c;
}
return result;
}
};
原地修改法
注意 i < j
的条件,因为s扩展预留了2*空格的数量,所以倒序遍历字符串,在没填充完空格的时候,j
一定大于i
class Solution {
public:
string replaceSpace(string s) {
int cnt = 0, len = s.size();
for(char c : s){
if(c == ' ') cnt++;
}
s.resize(len + 2 * cnt);
for(int i = len - 1, j = s.size() - 1; i < j; i--, j--){
if(s[i] != ' '){
s[j] = s[i];
}else{
s[j] = '0';
s[j - 1] = '2';
s[j - 2] = '%';
j -= 2;
}
}
return s;
}
};