替换空格
请实现一个函数,把字符串 s
中的每个空格替换成”%20”。
思路一:利用字符串拼接(不推荐,因为 JS中字符串无法被修改,一旦给字符串变量重新赋值,就要花费时间和空间去重新新建一个字符串,从而增加了复杂度!)
/**
* @param {string} s
* @return {string}
*/
var replaceSpace = function(s) {
var res = '';
for(var i = 0 ; i < s.length ; i++){
var ch = s[i];
if(s[i]==' '){
res += "%20" ;
}else{
res = res + ch;
}
}
return res;
};
思路二:
- 将字符串转换为数组,然后统计其中的空格数量。
- 根据空格数量和原有字符串有效字符长度,计算出刚好存放替换后的字符长度的数组。
- 创建两个指针,一个指数组末尾,一个指字符串有效位的末尾,实现原地修改.
/**
* @param {string} s
* @return {string}
*/
var replaceSpace = function(s) {
s = s.split("");
let oldLen = s.length;
let spaceCount = 0;
for (let i = 0; i < oldLen; i++) {
if (s[i] === ' ') spaceCount++;
}
s.length += spaceCount * 2;
for (let i = oldLen - 1, j = s.length - 1; i >= 0; i--, j--) {
if (s[i] !== ' ') s[j] = s[i];
else {
s[j - 2] = '%';
s[j - 1] = '2';
s[j] = '0';
j -= 2;
}
}
return s.join('');
};