leetcode 1 | 刷题打卡

205 阅读1分钟

题目描述

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

示例 1:

输入: s = "abcdefg", k = 2
输出: "cdefgab"
示例 2:

输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
 

限制:

1 <= k < s.length <= 10000

思路分析

  1. 利用js原生提供的api:slice, substr,substring

  2. 利用分治思想

AC代码

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

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

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

// 分治思想
var reverseLeftWords = function(s, n) {
    let l = r = ''
    for (let c of s) 
        n-- > 0 ? (r += c): (l += c)
    return l + r
};

总结

// slice(start, end)
// start
// 起始位置,表示从数据第几个元素开始(包括该元素)
// 负数表示从倒数第几个元素开始
// end
// 结束位置,表示到第几个元素结束(不包括该元素)
// 负数表示从倒数第几个元素结束
// end > start 返回空字符串

// substr(start, length)
// start
// 起始位置,表示从数据第几个元素开始(包括该元素)
// length,从起始位置开始的元素个数
// 起始位置为负表示从倒数第几个元素开始(不包括该元素)
// length > 数组实际长度,返回数据的最末尾
// length 不合法,返回空

// substring用法同slice但,start与end不能取负数