剑指 Offer 58 - II. 左旋转字符串
1.LeetCode 剑指 Offer 03. 数组中重复的数字2.LeetCode 剑指 Offer 04. 二维数组中的查找3.LeetCode 剑指 Offer 08. 二叉树的下一个节点4.LeetCode 剑指 Offer 12. 矩阵中的路径5.LeetCode 剑指 Offer 11. 旋转数组的最小数字6.LeetCode 剑指 Offer 13. 机器人的运动范围7.剑指Offe 14- I. 剪绳子8.剑指Offer 14- II. 剪绳子 II9.剑指Offer 15. 二进制中1的个数10.剑指Offer 16. 数值的整数次方11.剑指Offer 17. 打印从1到最大的n位数12.剑指Offer 18. 删除链表的节点13.剑指Offer 20. 表示数值的字符串14.剑指Offer 21. 调整数组顺序使奇数位于偶数前面15.剑指Offer 22. 链表中倒数第k个节点16.剑指Offer 25. 合并两个排序的链表17.剑指Offer 26. 树的子结构18.剑指Offer 27. 二叉树的镜像19.剑指Offer 28. 对称的二叉树20.剑指Offer 29. 顺时针打印矩阵21.剑指Offer 30. 包含min函数的栈22.剑指Offer 31. 栈的压入、弹出序列23.剑指Offer 32 - I. 从上到下打印二叉树24.剑指Offer 32 - II. 从上到下打印二叉树 II25.剑指Offer 32 - III. 从上到下打印二叉树26.剑指Offer 33. 二叉搜索树的后序遍历序列27.剑指Offer 34. 二叉树中和为某一值的路径28.剑指Offer 35. 复杂链表的复制29.剑指Offer 42. 连续子数组的最大和30.剑指Offer 45. 把数组排成最小的数31.剑指Offer 32.剑指Offer 43. 1~n 整数中 1 出现的次数33.剑指 Offer 46. 把数字翻译成字符串34.剑指 Offer 47. 礼物的最大价值35.剑指Offer 48. 最长不含重复字符的子字符串36.剑指 Offer 49. 丑数37.剑指 Offer 50. 第一个只出现一次的字符38.剑指 Offer 51. 数组中的逆序对39.剑指 Offer 52. 两个链表的第一个公共节点40.剑指 Offer 53 - I. 在排序数组中查找数字 I41.剑指 Offer 53 - II. 0~n-1中缺失的数字42.剑指 Offer 54. 二叉搜索树的第k大节点43.剑指 Offer 55 - I. 二叉树的深度44.剑指 Offer 55 - II. 平衡二叉树45.剑指 Offer 56 - I. 数组中数字出现的次数46.剑指 Offer 57 - II. 和为s的连续正数序列47.剑指 Offer 56 - II. 数组中数字出现的次数 II
48.剑指 Offer 58 - II. 左旋转字符串
49.剑指 Offer 59 - I. 滑动窗口的最大值50.剑指 Offer 60. n个骰子的点数51.剑指 Offer 61. 扑克牌中的顺子52.剑指 Offer 62. 圆圈中最后剩下的数字53.剑指 Offer 63. 股票的最大利润54.剑指 Offer 64. 求1+2+…+n55.剑指 Offer 65. 不用加减乘除做加法56.剑指 Offer 66. 构建乘积数组57.剑指 Offer 67. 把字符串转换成整数58.剑指 Offer 68 - I. 二叉搜索树的最近公共祖先59.剑指 Offer 68 - II. 二叉树的最近公共祖先题目链接: 剑指 Offer 58 - II. 左旋转字符串
题目描述:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。
比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
解法思路:
- 常规的切片分割思路
代码:
func reverseLeftWords(s string, n int) string {
return s[n:] + s[:n]
}
- 利用反转字符串的思路,先反转前n个,后反转后n个,最后反转整个字符串
代码:
func reverseLeftWords(s string, n int) string {
m := len(s)
if m == 0 {
return ""
}
str := []byte(s)
// 反转后 n 个
reverse(str[:n])
// 反转前 n 个
reverse(str[n:])
// 反转整个串
reverse(str)
return string(str)
}
func reverse(s []byte){
m := len(s)
for i,j := 0,m-1 ;i < j ;i,j = i+1,j-1{
s[i],s[j] = s[j],s[i]
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理