剑指 Offer 58 - II. 左旋转字符串
# 📃 题目描述
题目链接:
- 剑指 Offer 58 - II. 左旋转字符串 - 力扣(LeetCode) (leetcode-cn.com) (opens new window)
- 类似题目:旋转数组_牛客题霸_牛客网 (nowcoder.com) (opens new window)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = "abcdefg", k = 2
输出: "cdefgab"
示例 2:
输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
# 🔔 解题思路
经历完上一题,相信各位看这题就是小菜一碟了,仍然是局部反转 + 整体反转,反转就还是左右指针的套路:
- 局部反转 s[0 : k-1]
- 局部反转 s[k : s.length - 1]
- 整体反转 s[0 : s.length - 1]
class Solution {
public String reverseLeftWords(String s, int k) {
char[] arr = s.toCharArray();
// 1.
reverse(arr, 0, k - 1);
// 2.
reverse(arr, k, arr.length - 1);
// 3.
reverse(arr, 0, arr.length - 1);
return new String(arr);
}
private void reverse(char[] arr, int left, int right) {
while (left < right) {
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
# 💥 复杂度分析
- 空间复杂度:O(1)
- 时间复杂度:O(N)
🎁 公众号

各位小伙伴大家好呀,叫我小牛肉就行,目前在读东南大学硕士,上方扫码关注公众号「飞天小牛肉」,与你分享我的成长历程与技术感悟~
帮助小牛肉改善此页面 (opens new window)
Last Updated: 2023/02/16, 11:27:10