《剑指offer》第二题(js)

《剑指offer》第二题(js)

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

方法一、用正则表达式
function replaceSpace(str)
{
    // write code here
    var afterReplace = str.replace(/\s/g,"%20");
    return afterReplace;
}

运行时间:14ms,占用内存:5428k

方法二

遍历字符串,通过indexOf(" “)查找空格位置,与字符位置比较。若不相等,则将该字符存入新字符串,若相等则用别的字符替换空格,且存入”%20"到新字符串。返回新字符串。

注意:字符串不能通过下标修改!

function replaceSpace(str)
{
    // write code here
    var strs = "",j = 0;
    if (typeof(str) != 'string') return false;
    for (var i=0;i<str.length;i++) {
        if (str.indexOf(" ") === i) {
        // 用0替换空格,保持字符串长度不变,正常遍历
        // 且str.indexOf能得到下一空格的位置
           str = str.substring(0,i) + "0" + str.substring(i+1);
           strs += "%20";
        }else {
            strs += str.substring(i,i+1);
        }
    }
    return strs;
}

运行时间:12ms,占用内存:5328k

方法三

思路和上面的差不多。将字符串用 split 方法转换为数组,并创建一个新数组。用for in循环每一项,判断是否为空格。若是,则在新数组中存入 “%20”,若不是,则将该项存入新数组。最后用 join 方法将新数组转换为字符串返回。

function replaceSpace(str){
    // write code here
    if (typeof(str) != 'string') return false;
    var strs = str.split("");
    var result = [];
    for (var index in strs) {  // 注意 index 是 key,不是 value
        if (strs[index] === " ") {
            result.push("%20");
        }else {
            result.push(strs[index]);
        }
    }
    return result.join("");
}

运行时间:15ms,占用内存:5344k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值