LeetCode #20 Valid Parentheses - 刷題之旅
1 題目描述
這是一個括號匹配的問題,給一個只包含(
, )
, {
, }
, [
, ]
的字符串,目的是要檢查一個字串是否是有效的括號組合。
2 解法
我的想法很簡單:
- 先建立一個 dictionary,把所有的括號對應關係記錄下來。 key 是
(
,{
,[
,value 是說明 key 的方向(open
orclose
)與屬性(大, 中, 小括號)。 - 開始遍歷字串,如果是
open
,就把它放進 stack 裡面,如果是close
,就檢查 stack 最上面的元素是否是對應的開括號,如果是就 pop 掉,不是就返回 False。
大概是這種感覺:
1 | class Solution: |
時間複雜度O(n) for 循環遍歷整個 s 列表,時間複雜度為 O(n)。
空間複雜度O(n) 空間複雜度由字典 stack存儲 n 個不同的字,因此空間複雜度為 O(n)。
3 總結
這題很簡單,但是要能夠想到用 stack 來解決,如果是應對對稱性的問題,stack 是一個很好的選擇。
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Shannon's Blog 🐟 技術 | 生活 | 旅行! 如果你覺得我的文章有幫助,希望你可以到我的 github 給我一個 star ⭐️ Shannon Blog Repo
評論