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

141 阅读1分钟

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

方法1

转换成数组,然后利用指针交换元素

var reverseLeftWords = function(s, n) {
    // 转换成数组的形式,因为字符串是不可变的
    s = s.split('')
    // 左旋转之后的新长度
    let newLength = s.length+n
    // 设置双指针
    let i=0, j=s.length

    // 进行替换
    for(let i=0;i<n;i++){
        // 注意是两两交换
        [s[j],s[i]] = [s[i],s[j]]
        j++
    }
    return s.join('')
};

方法二

利用str.slice(),截断字符串然后进行拼接

var reverseLeftWords = function(s, n) {
    return s.slice(n) + s.slice(0,n);
};

方法三

转换成数组,利用数组的方法,从数组的头部弹出n个元素,插入到数组的尾部

var reverseLeftWords = function (s, n) {
    var i = 0;
    var arr = [...s];
    while(i<n){
        arr.push(arr.shift());
        i++;
    }
    return arr.join('')
};