算法打卡第三天

74 阅读1分钟

问题

  1. 剑指 Offer 05. 替换空格
  2. 剑指 Offer 58 - II. 左旋转字符串

剑指 Offer 05. 替换空格

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

理解题意 将字符串中所有的空格替换为%20

  1. 定义一个变量str="",然后遍历原字符串,如果是空格就替换,不是就赋值原字符

测试用例 输入:s = "We are happy." 输出:"We%20are%20happy."

var replaceSpace = function(s) {
    // 内置方法 69 86
    return s.replaceAll(" ","%20")

    // 暴力 20 97
    let out="";
    for (let i = 0; i < s.length; i++) {
        if(s[i]===" "){
            out+="%20"
        }else{
            out+=s[i]
        }
    }
    return out
};

剑指 Offer 58 - II. 左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

理解题意

  1. 可以看成同一个字符串重复两次,然后从n开始截取好字符串的长度。

测试用例1 输入: s = "abcdefg", k = 2 输出: "cdefgab" 测试用例2 输入: s = "lrloseumgh", k = 6 输出: "umghlrlose"

var reverseLeftWords = function(s, n) {
    // 内置方法 65 83
    return `${s.slice(n)}${s.slice(0,n)}`
    // 暴力 29 17 
    let str = s;
    let out = ""
    for (let i = n; i < str.length; i++) {
        out += str[i]
    }
    for (let i = 0; i < n; i++) {
        out += str[i]
    }
    return out
};