剑指 Offer 58 - II. 左旋转字符串

题目链接: 剑指 Offer 58 - II. 左旋转字符串

题目描述:

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。
比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

解法思路:

  1. 常规的切片分割思路
    代码:
func reverseLeftWords(s string, n int) string {
    return s[n:] + s[:n]
}
  1. 利用反转字符串的思路,先反转前n个,后反转后n个,最后反转整个字符串
    代码:
func reverseLeftWords(s string, n int) string {
   
    m := len(s)
    if m == 0 {
        return ""
    }
    str := []byte(s)
    // 反转后 n 个
    reverse(str[:n])
    // 反转前 n 个 
    reverse(str[n:]) 
    // 反转整个串
    reverse(str)
    return string(str)
}
func reverse(s []byte){
    m := len(s)
    for i,j := 0,m-1 ;i < j ;i,j = i+1,j-1{
        s[i],s[j] = s[j],s[i]
    }
}

posted @   小星code  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示