题目
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = "abcdefg", k = 2
输出: "cdefgab"
示例 2:
输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
限制:
1 <= k < s.length <= 10000
解析
这题较为简单,使用字符串slice方法即可,
- 将字符串
s切割成两部分[0, n)和[n, s.length), - 将
[0, n)这部分字符串放到[n, s.length)后,拼接返回结果
注意, 字符串的slice(start, end)方法, 切片范围不包含end位置的字符,所以slice取[0, n) 和 [0, s.length)。
参考代码
- 字符串切片I
/**
* @param {string} s
* @param {number} n
* @return {string}
*/
var reverseLeftWords = function(s, n) {
// 将`[0, n)` 这部分字符串放到 `[n, s.length)`后,拼接返回结果
return s.slice(n) + s.slice(0, n);
};
- 字符串切片II
/**
* @param {string} s
* @param {number} n
* @return {string}
*/
var reverseLeftWords = function(s, n) {
// 把字符串赋值一份拼接,如: s = abcdefg, doubleWords = "abcdefgabcdefg"
const doubleWords = s + s;
// 切片的起始位置
const startIndex = n;
// 切片的结束位置 = 起始位置 + s 的 长度
const endIndex = n + s.length;
// 返回最终的切片结果
return doubleWords.slice(startIndex, endIndex);
};