題目解釋
給定一個僅包含字元 '('
, ')'
, '{'
, '}'
, '['
和 ']'
的字串 s
,確定輸入字串是否有效。
輸入字串在以下情況下有效:
- 左括號必須由相同類型的括號封閉。
- 左括號必須以正確的順序關閉。
- 每個右括號都有一個對應的相同類型的左括號。
範例
- 輸入:
s = "()"
- 輸出:
true
輸出是 true
,因為 (
與 )
可以配對。
最佳解法
由於這題是需要在 k
的容許範圍內替換掉字母,以讓整個 substring 的字串能夠盡可能變長。因此我們直覺的就想到建立一個 {字母: 次數}
的 dict 來維護我們 traverse 時的關係。
我們使用雙指標(Two Pointer)的解法來解這題。
NOTE: 請謹記 right - left + 1
這個公式,它就是我們滑動窗口(Sliding Window)的長度!
步驟
程式碼
class Solution:
def isValid(self, s: str) -> bool:
stack = []
match_pattern = {
')': '(',
'}': '{',
']': '['
}
for i in s:
if i not in match_pattern:
stack.append(i)
else:
if not stack or stack.pop() != match_pattern[i]:
return False
if not stack:
return True
else:
return False
時間複雜度
O(n)
,n 是 s
的字母個數。
空間複雜度
O(n)
。
結語
Run 時覺得自己才思敏捷,
Submit 後被 edge case 搞到夜不能寐 💯
Latest posts by 數據女巫 𝔻.𝕡𝕪𝕤 🔮 (see all)
- [資料工程筆記] 資料市集(Data Mart)介紹與在三大雲端服務的工具名詞對照 - 2025-07-25
- [資料工程筆記] 資料倉儲(Data Warehouse)介紹與在三大雲端服務的工具名詞對照 - 2025-07-23
- [資料工程筆記] 資料湖(Data Lake)介紹與在三大雲端服務的工具名詞對照 - 2025-07-21