题目描述
1. 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符’a’和’b’移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。
分析与解法
方案一:暴力位移(时间复杂度不符合要求)
思路
逻辑思路:
1. 把需要移动的字符一个一个的移动到字符串的尾部
代码实现思路:
1. 实现一个函数,可以完成移动一个字符到字符串尾部的功能
2. 循环m次调用上述函数,完成移动m个字符到字符串尾部
代码实现(GO语言)
package main
func LeftShiftOne(chars []byte,n int) {
c:=chars[0] // 获取第一个字符
for i:=1;i<n;i++{
chars[i-1]=chars[i]
}
chars[n-1]=c
}
func LeftRotateString(s string,m int) string {
chars:=[]byte(s)
n:=len(chars)
for m>0{
LeftShiftOne(chars,