有效的括號

2021-10-09 14:24:28 字數 1225 閱讀 7823

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

判斷括號的有效性可以使用「棧」這一資料結構來解決。

我們對給定的字串 s 進行遍歷,當我們遇到乙個左括號時,我們會期望在後續的遍歷中,有乙個相同型別的右括號將其閉合。由於後遇到的左括號要先閉合,因此我們可以將這個左括號放入棧頂。

當我們遇到乙個右括號時,我們需要將乙個相同型別的左括號閉合。此時,我們可以取出棧頂的左括號並判斷它們是否是相同型別的括號。如果不是相同的型別,或者棧中並沒有左括號,那麼字串 s 無效,返回 false。為了快速判斷括號的型別,我們可以使用雜湊對映(hashmap)儲存每一種括號。雜湊對映的鍵為右括號,值為相同型別的左括號。

在遍歷結束後,如果棧中沒有左括號,說明我們將字串 s 中的所有左括號閉合,返回 true,否則返回 false。

注意到有效字串的長度一定為偶數,因此如果字串的長度為奇數,我們可以直接返回 false,省去後續的遍歷判斷過程。

class

solution

unordered_map<

char

,char

> pairs =,,

','}

; stack<

char

> stk;

for(

char ch: s)

stk.

pop();

}else

}return stk.

empty()

;}};

時間複雜度:o(n),其中 n 是字串 s 的長度。

空間複雜度:o(n+∣σ∣),其中 σ 表示字符集,本題中字串只包含 6 種括號,∣σ∣=6。棧中的字元數量為 o(n),而雜湊對映使用的空間為 o(∣σ∣),相加即可得到總空間複雜度。

有效的括號

題目描述 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。解題思路 坦白來講這道題真的沒什麼思路,掉的坑也比較多,因為審題不認真,最後的一句話,注意空字串可被認為是有效字串。被吃掉了 最後提交的 執...

有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。多組資料 每組是乙個由 組成的括號序列 每組字串長度不超過50。如果有效輸出true,否則輸出false。true true false false ...

有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。多組資料 每組是乙個由 組成的括號序列 每組字串長度不超過50。如果有效輸出true,否則輸出false。true true false false ...