首页 > 其他 > 详细

JZ43 左旋转字符串

时间:2021-04-10 23:14:39      阅读:42      评论:0      收藏:0      [点我收藏+]

左旋转字符串

对于一个给定的字符序列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 左旋转字符串

原文:https://www.cnblogs.com/dingxiaoqiang/p/14641684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!