JZ43 左旋转字符串

2021/4/10 18:41:39

本文主要是介绍JZ43 左旋转字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

左旋转字符串

对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。

思路:

 使用三步反转法

1)使用O(n)的时间,直接遍历找到反转的中间元素;

2)将中间元素前面的进行反转,再将后面的元素进行反转,这里需要使用交换操作比如swap的功能;

3)最后将整个数组进行反转。

func LeftRotateString( str string, n int) string {
    if len(str) == 0 || n < 0  {
        return ""
    }
    bytes := []byte(str)
    helper := func (start, end int) {
        for  start < end {
            bytes[start], bytes[end] = bytes[end], bytes[start]
            start++ 
            end--
        }
    }
    helper(0,n - 1)
    helper(n,len(bytes) - 1)
    helper(0,len(bytes)  - 1)
    return string(bytes)
}

 



这篇关于JZ43 左旋转字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程