题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
【[Golang]力扣Leetcode—剑指Offer—字符串—58 - II. 左旋转字符串】链接: 力扣Leetcode—剑指Offer—字符串—58 - II. 左旋转字符串.
示例 1:
输入: s = "abcdefg", k = 2示例 2:
输出: "cdefgab"
输入: s = "lrloseumgh", k = 6思路:在编程的时候,全面地考虑问题是很重要的,n 可能是一个远大于字符串长度的整数,循环右移不难发现,右移 n 位之后的情形,跟右移 n % len(s) 位之后的情形一样,再进行字符串拼接 res := s[n:number] + s[0:n] 就是答案了。
输出: "umghlrlose"
Go代码:
package mainimport "fmt"func reverseLeftWords(s string, n int) string {
number := len(s)
if s == "" || number == 0 {
return s
}
n = n % number
// 取余,旋转的位数可能大于字符串的长度,旋转一周字符串等于没变
res := s[n:number] + s[0:n]
return res
}func main() {
fmt.Println(reverseLeftWords("lrloseumgh", 6))
}
提交截图:
文章图片
推荐阅读
- [Golang]力扣Leetcode—剑指Offer—字符串—05. 替换空格
- [Golang]力扣Leetcode—剑指Offer—数组—61. 扑克牌中的顺子
- [Golang]力扣Leetcode—剑指Offer—数组—53 - II. 0~n-1中缺失的数字(求和、二分法)
- [Golang]力扣Leetcode—剑指Offer—数组—17.打印从1到最大的n位数(遍历)
- [Golang]力扣Leetcode—中级算法—其他—两整数之和(位运算)
- [Golang]力扣Leetcode—中级算法—数学—Pow(x, n)(分治算法)
- [Golang]力扣Leetcode—中级算法—数学—Excel表列序号
- [Golang]力扣Leetcode—中级算法—数学—阶乘后的零
- [Golang]力扣Leetcode—初级算法—数学—3的幂