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

发布时间:2021-12-15 14:01:46 作者:小新
来源:亿速云 阅读:85

这篇文章主要介绍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中如何实现左旋转字符串”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. java实现左旋转字符串
  2. leetcode中如何实现数组拆分

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

leetcode

上一篇:Qt中如何使用canon edsdk实现实时预览

下一篇:LeetCode如何输入字符串的排列

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》