前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指 Offer 58.左旋转字符串

剑指 Offer 58.左旋转字符串

作者头像
才浅Coding攻略
发布2022-12-12 17:09:17
1490
发布2022-12-12 17:09:17
举报
文章被收录于专栏:才浅coding攻略

本题解法有很多,这里介绍字符串切片列表遍历拼接字符串遍历拼接三种方法。后两种方法大同小异,下面我们来看下代码。

字符串切片

代码语言:javascript
复制
# Python3代码:
def reverseLeftWords1(s, n):
    return s[n:] + s[:n]


s = "abcdefg"
n = 2
print(reverseLeftWords1(s, n))
# cdefgab
代码语言:javascript
复制
//Go代码:
func reverseLeftWords1(s string, n int) string {
  return s[n:] + s[:n]
}

列表遍历拼接

代码语言:javascript
复制
# Python3代码:
def reverseLeftWords2(s, n):
    res = []
    for i in range(n, len(s)):
        res.append(s[i])
    for i in range(n):
        res.append(s[i])
    return "".join(res)


s = "90uisadjpa"
n = 2
print(reverseLeftWords2(s, n))
# uisadjpa90

字符串遍历拼接

代码语言:javascript
复制
# python3代码:
def reverseLeftWords3(s, n):
    res = ""
    for i in range(n, len(s)):
        res += s[i]
    for i in range(n):
        res += s[i]
    return res
    
# 遇到到尾端就要从头开始 的,基本都可以用取余的方法
def reverseLeftWords4(s, n):
    res = ""
    for i in range(n, n + len(s)):
        res += s[i % len(s)]  # 用取余来找下标
    return res

s = "1111yiyi"
n = 4
print(reverseLeftWords3(s, n))
print(reverseLeftWords4(s, n))
# yiyi1111
代码语言:javascript
复制
//Go代码:
func reverseLeftWords2(s string, n int) string {
  str1 := ""
  str2 := ""
  for i := 0; i < len(s); i++{
    if i < n{
      str1 += string(s[i])
    }else {
      str2 += string(s[i])
    }
  }
  return str2 + str1
}

func main()  {
  s := "900abcdefg"
  n := 3
  //println(reverseLeftWords1(s, n))
  println(reverseLeftWords2(s, n))
}
//abcdefg900

以上方法的运行耗时和内存消耗如下。不论语言,新建两切片字符串,并将两切片拼接为结果字符串,无冗余操作,效率最高;第二种方法,由于列表是可变对象,每轮遍历拼接字符时,只是向列表尾部添加一个新的字符元素。最终拼接转化为字符串时,系统仅申请一次内存 ;第三种方法,由于字符串是不可变对象,每轮遍历拼接字符时,都需要新建一个字符串;因此,系统需申请 N 次内存,数据量较大时效率低下。三种方法的时间和空间复杂度均为O(N)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 才浅coding攻略 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档