旋转字符串

要求:

给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)

示例:

对于字符串 "abcdefg".

offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
 1 package main
 2 
 3 import "fmt"
 4 
 5 /**
 6  * 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
 7  * 字符串"abcdefg"
 8  * offset=0 => "abcdefg"
 9  * offset=1 => "gabcdef"
10  * offset=2 => "fgabcde"
11  * offset=3 => "efgabcd"
12  */
13 func main() {
14     var offset int = 3
15     var str = []byte{'a', 'b', 'c', 'd', 'e', 'f', 'g'}
16     res := strrev(str, offset)
17     fmt.Println(string(res))
18 
19 }
20 
21 func strrev(str []byte, offset int) []byte {
22     //处理异常情况
23     if offset <= 0 {
24         return str
25     }
26     lstr := len(str)
27     if lstr == 0 {
28         return str
29     }
30 
31     //翻转(每次pop最后一个元素,然后push到第一个元素前面)
32     for i:=0;i<offset%lstr;i++ {
33         tmp := str[lstr-1]//去最后一个元素
34         j := lstr - 2
35         for j >= 0 {//除了最后一个元素之外,其它元素均向后移动一个位置
36             str[j+1] = str[j]
37             j--
38         }
39         str[0] = tmp
40     }
41     return str
42 }
原文地址:https://www.cnblogs.com/573583868wuy/p/8444725.html