Skip to content

左旋转字符串 #2

Open
Open
@Bulandent

Description

@Bulandent

左旋转字符串

难度:简单
来源:剑指 Offer 58 - II

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

示例 1:

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

示例 2:

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

限制:

1 <= k < s.length <= 10000

题解一:字符串切片

/**
 * @param {string} s
 * @param {number} n
 * @return {string}
 */
var reverseLeftWords = function(s, n) {
    return (s + s).substr(n, s.length)
};
  • 时间复杂度:,执行用时:84 ms
  • 空间复杂度:,内存消耗:38.9 MB

题解二:遍历+余数

/**
 * @param {string} s
 * @param {number} n
 * @return {string}
 */
var reverseLeftWords = function(s, n) {
    let res = []
    for(let i = n, l = n + s.length; i < l; i++) {
        res.push(s.charAt( i % s.length ))
    }
    return res.join('')
};
  • 时间复杂度:,执行用时:80 ms
  • 空间复杂度:,内存消耗:40.6 MB

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions