📅  最后修改于: 2023-12-03 15:07:29.340000             🧑  作者: Mango
在编程中,通常会遇到需要将一个数组或字符串按照一定规则进行旋转的情况。本文介绍如何实现“向左旋转 k 个单元格”的操作。
给定一个数组或字符串和一个整数 k,将其向左旋转 k 个单元格。例如,对于数组 [1, 2, 3, 4, 5] 和 k = 2,应该返回 [3, 4, 5, 1, 2]。
我们可以通过三次反转(reverse)操作来实现向左旋转 k 个单元格的操作。具体步骤如下:
其中,n 表示数组或字符串的长度。
以数组为例,下面给出一份 Python 代码实现:
def rotate(nums, k):
n = len(nums)
k = k % n
reverse(nums, 0, k - 1)
reverse(nums, k, n - 1)
reverse(nums, 0, n - 1)
def reverse(nums, start, end):
while start < end:
nums[start], nums[end] = nums[end], nums[start]
start += 1
end -= 1
此代码实现了将数组 nums 向左旋转 k 个单元格的操作。需要注意的是,我们在实现过程中首先对 k 进行了取模操作,以防 k 大于数组长度。
对于字符串,同样可以采用上述思路实现。下面给出一份 JavaScript 代码实现:
function rotate(str, k) {
var len = str.length;
k = k % len;
str = reverse(str, 0, k - 1);
str = reverse(str, k, len - 1);
str = reverse(str, 0, len - 1);
return str;
}
function reverse(str, start, end) {
str = str.split('');
while (start < end) {
var temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return str.join('');
}
本文介绍了如何实现“向左旋转 k 个单元格”的操作,让我们在解决相关问题时更加得心应手。