溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

LeetCode中如何實現(xiàn)左旋轉(zhuǎn)字符串

發(fā)布時間:2021-12-15 14:01:46 來源:億速云 閱讀:91 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹LeetCode中如何實現(xiàn)左旋轉(zhuǎn)字符串,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

題目描述

字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個字符轉(zhuǎn)移到字符串的尾部。請定義一個函數(shù)實現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串"abcdefg"和數(shù)字 2,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果"cdefgab"。

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

題目樣例

               

示例

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

  • 輸出: "cdefgab"

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

  • 輸出: "umghlrlose"

               

題目思考

  1. 如果要求不能使用語言內(nèi)置函數(shù), 該如何做?
               

解決方案

               

方案 1

               
思路
  • 根據(jù)題目描述, 使用 python 的話完全可以直接利用切片, 一行代碼來搞定..
               
復(fù)雜度
  • 時間復(fù)雜度 O(N): 切片的時間復(fù)雜度
  • 空間復(fù)雜度 O(1): 只使用了幾個變量
               
代碼
class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        # 切片
        return s[n:] + s[0:n]
                                 

方案 2

               
思路
  • 如果要求不能使用語言內(nèi)置函數(shù), 又該怎么做呢?
  • 很顯然我們可以從下標(biāo)為 k 的地方開始遍歷, 將后面的字符依次加入結(jié)果中
  • 遍歷到末尾后, 再從 0 開始遍歷到 k, 將這部分字符再加入結(jié)果中即可
  • 這種方案跟語言無關(guān), 比較通用, 只是通常情況下沒必要, 因為內(nèi)置操作會有一些優(yōu)化, 一般會比自己實現(xiàn)的效率高..
               
復(fù)雜度
  • 時間復(fù)雜度 O(N): 每個字符只遍歷一次
  • 空間復(fù)雜度 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中如何實現(xiàn)左旋轉(zhuǎn)字符串”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI