↓快轉到主要內容
  1. LeetCode/

LeetCode 2000: Reverse Prefix of Word

·1 分鐘· ·
LeetCode Easy Two-Pointers String Stack
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2024-05-01

  • 提交紀錄:Accepted(一次通過)

解題思路
#

i = word.find(ch),找不到是 -1,這時 word[:0] 是空的,反轉後接上整個 word,剛好原樣回傳,不用特別判斷。手寫的話就是對 [0, i] 做左右指針交換(Two Pointers 模板一)。

我的解法
#

class Solution:
    def reversePrefix(self, word: str, ch: str) -> str:
        i = word.find(ch)
        return word[:i + 1][::-1] + word[i + 1:]

複雜度
#

時間 O(n),空間 O(n)。

要特別避免的錯誤
#

  • 用 index 找不到時會丟例外,find 回傳 -1。

面試口說整理
#

我用 find 找到 ch 第一次出現的位置,把到那裡為止的前綴反轉再接上後面;找不到時 find 回傳 -1,前綴是空的,結果剛好是原字串。時間 O(n)。

相關文章

LeetCode 844: Backspace String Compare
·1 分鐘
LeetCode Easy Two-Pointers String Stack Simulation
LeetCode 844 解題筆記:用 stack 模擬退格;O(1) 空間的話從尾巴往前,遇到 # 就記下要跳過幾個字元
LeetCode 942: DI String Match
·1 分鐘
LeetCode Easy Array Two-Pointers String Greedy
LeetCode 942 解題筆記:兩個指標分別指向還沒用的最小值和最大值,遇到 I 放最小、遇到 D 放最大
LeetCode 557: Reverse Words in a String III
·1 分鐘
LeetCode Easy Two-Pointers String
LeetCode 557 解題筆記:用空白切開,每個單字各自反轉,再用空白接回去
LeetCode 345: Reverse Vowels of a String
·1 分鐘
LeetCode Easy Two-Pointers String
LeetCode 345 解題筆記:跟 LC 917 一樣的左右指針,只是條件換成「是不是母音」(大小寫都要算)
LeetCode 1047: Remove All Adjacent Duplicates In String
·1 分鐘
LeetCode Easy String Stack
LeetCode 1047 解題筆記:stack 頂端跟目前字元相同就一起消掉,否則放進 stack;消掉之後新的頂端可能又能跟下一個消
LeetCode 1021: Remove Outermost Parentheses
·1 分鐘
LeetCode Easy String Stack Bracket-Sequences
LeetCode 1021 解題筆記:用深度計數取代 stack,深度從 0 變 1 的左括號和從 1 變 0 的右括號是外層,其他都保留