字符串循环左移

作者: ccup区块链 | 来源:发表于2018-05-25 12:31 被阅读8次

问题描述:给定一个字符串,将若干个字符移动到该字符串尾部
例:1234abc将前四个字符移动到尾部,输出abc1234

思路

  • 蛮力法,移动
    • 时间复杂度高
  • 分部拷贝,交换
    • 空间复杂度高
  • 三步翻转
    • 时间复杂度O(n)
    • 空间复杂度O(1)

golang代码如下:(三步反转)

//三步翻转
func stringRevote(start, end int, str []byte) {

    if start < 0 || end > len(str)-1 {
        log.Fatal("起始位置或终止位置错误")
    }
    //golang中切片是传址
    for start < end {
        //第一个跟最后一个换
        str[start], str[end] = str[end], str[start]
        //起始点向后移动
        start++
        //终止点向前移动
        end--
    }
}

func main() {
    var s []byte
    var end int
    fmt.Println("请输入字符串:")
    fmt.Scanf("%s", &s)

    fmt.Println("请输入移动几个字符:")
    fmt.Scanf("%d", &end)

    stringRevote(0, end-1, s)
    fmt.Printf("%s\n", s)

    stringRevote(end, len(s)-1, s)
    fmt.Printf("%s\n", s)

    stringRevote(0, len(s)-1, s)
    fmt.Printf("%s\n", s)

}

分部拷贝,交换

func stringRotation(s string, index int) string {
    if index > len(s) {
        return "error:index超出长度"
    }
    sb := []byte(s)
    //截取两部分,temp暂存前半部分,即将旋转到后半部分位置
    temp := sb[:index]
    //sb切割掉前半部分,重新赋值为后半部分
    sb = sb[index:]
    //将前半部分的值,正序追加到sb尾部
    for i := 0; i < index; i++ {
        sb = append(sb, temp[i])
    }
    return string(sb)

}

相关文章

  • 字符串循环左移

    问题描述:给定一个字符串,将若干个字符移动到该字符串尾部例:1234abc将前四个字符移动到尾部,输出abc123...

  • 算法复习之字符串(1)

    (1)字符串循环左移 | 字符串全排列(递归,非递归)《本节内容》(2)KMP算法| BF算法(3 字符串的最...

  • 字符串循环左移算法

    声明: 本总结仅为个人学习总结,以防止遗忘而作,不得转载和商用。题目要求:给定一个字符串S[0...N-1],要求...

  • Python自编程序一

    先上程序!!!! 切片并连接字符or字符串循环左移 s=str(raw_input('Please input t...

  • 将数组元素循环移动p位,交换次数仅为n次

    算法思路 循环左移p位 数组序列长度为n,左移p位。 算法步骤 代码如下: 循环左移p位 数组序列长度为n,右移p...

  • 数组循环左移

    数组循环左移 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组...

  • 左旋转字符串-java

    左旋转字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指...

  • 剑指Offer——字符串的旋转

    问题一:左旋转字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模...

  • 剑指 offer:43、左旋转字符串

    43. 左旋转字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模...

  • JZ-043-左旋转字符串

    左旋转字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指...

网友评论

    本文标题:字符串循环左移

    本文链接:https://www.haomeiwen.com/subject/uviyjftx.html