LeetCode中如何实现左旋转字符串

这篇文章主要介绍LeetCode中如何实现左旋转字符串,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联公司总部坐落于成都市区,致力网站建设服务有网站制作、做网站、网络营销策划、网页设计、网站维护、公众号搭建、小程序开发、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!

题目描述

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

  • 1 <= k < s.length <= 10000
               

题目样例

               

示例

  • 输入: s = "abcdefg", k = 2

  • 输出: "cdefgab"

  • 输入: s = "lrloseumgh", k = 6

  • 输出: "umghlrlose"

               

题目思考

  1. 如果要求不能使用语言内置函数, 该如何做?
               

解决方案

               

方案 1

               
思路
  • 根据题目描述, 使用 python 的话完全可以直接利用切片, 一行代码来搞定..
               
复杂度
  • 时间复杂度 O(N): 切片的时间复杂度
  • 空间复杂度 O(1): 只使用了几个变量
               
代码
class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        # 切片
        return s[n:] + s[0:n]
                                 

方案 2

               
思路
  • 如果要求不能使用语言内置函数, 又该怎么做呢?
  • 很显然我们可以从下标为 k 的地方开始遍历, 将后面的字符依次加入结果中
  • 遍历到末尾后, 再从 0 开始遍历到 k, 将这部分字符再加入结果中即可
  • 这种方案跟语言无关, 比较通用, 只是通常情况下没必要, 因为内置操作会有一些优化, 一般会比自己实现的效率高..
               
复杂度
  • 时间复杂度 O(N): 每个字符只遍历一次
  • 空间复杂度 O(1): 只使用了几个变量
               
代码
class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        res = ''
        for i in range(n, len(s)):
            res += s[i]
        for i in range(n):
            res += s[i]
        return res

以上是“LeetCode中如何实现左旋转字符串”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


当前名称:LeetCode中如何实现左旋转字符串
浏览路径:http://scyanting.com/article/ipohsj.html