替换空格(字符串数组)


替换空格

请实现一个函数,把字符串 s 中的每个空格替换成”%20”。

4uODR1.png

思路一:利用字符串拼接(不推荐,因为 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('');

};

文章作者: Daniel Lin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Daniel Lin !
  目录