题意:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
思路:
- 本题的核心操作还是在反转字符串,但难点是找到反转字符串的区间
方法一:
/**
* @param {string} s
* @param {number} n
* @return {string}
*/
var reverseLeftWords = function(s, n) {
let strArr = Array.from(s)
let length = strArr.length
//先反转整个字符串
reverse(strArr,0,length-1)
//再反转前半部分字符串
reverse(strArr,0,length-1-n)
//再反转后半部分字符串
reverse(strArr,length-n,length-1)
return strArr.join('')
};
var reverse = function(strArr,start,end){
let left = start
let right = end
while(left<right){
[strArr[left],strArr[right]]=[strArr[right],strArr[left]]
left++
right--
}
}
方法二:
var reverseLeftWords = function(s, n) {
const length = s.length;
let i = 0;
while (i < length - n) {
//字符串拼接
s = s[length - 1] + s;
i++;
}
return s.slice(0, length);
};