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)
}

 

上一篇:Intellij 查找排除JAR包的依赖关系(Maven Helper)


下一篇:springboot 发送QQ邮件和附件