Leetcode刷題:劍指offer【面試題58-Ⅱ 左旋轉字符串】

【面試題58-Ⅱ 左旋轉字符串】

面試題58-Ⅱ:左旋轉字符串:字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數實現字符串左旋轉操作的功能。比如,輸入字符串"abcdefg"和數字2,該函數將返回左旋轉兩位得到的結果"cdefgab"。

思路一:使用字符串切片和字符串拼接。但是這樣做太投機取巧了!

時間複雜度O(n)O(n),切片操作的時間複雜度
空間複雜度O(n)O(n),兩個字符串切片的總長度爲 N

class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        return s[n:] + s[:n]

思路二:創建額外的列表,將原字符串第 n+1 個到最後一個字符添加進去,再添加首位至第 n 個字符,將列表內容拼接爲字符串返回。

時間複雜度O(n)O(n),切片操作的時間複雜度
空間複雜度O(n)O(n),兩個字符串切片的總長度爲 N

class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        res = []
        for i in range(n, len(s)):
            res.append(s[i])
        for i in range(n):
            res.append(s[i])
        return ''.join(res)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章