20 有效的括號

2021-10-24 08:30:36 字數 1100 閱讀 3574

20.有效的括號

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

有效字串需滿足:

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

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

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

示例 1:

輸入: "()"

輸出: true

示例 2:

輸入: "(){}"

輸出: true

示例 3:

輸入: "(]"

輸出: false

示例 4:

輸入: "([)]"

輸出: false

示例 5:

輸入: ""

輸出: true

思考:

括號配對是乙個典型的棧的應用。有些細節要注意。

首先,知道計算器沒有判斷左右括號相等的能力,所以入棧的時候,如果是左括號,我們要讓右括號入棧。然後遍歷到右括號的時候,可以彈棧出來相比較。這個可以用hashmap實現。

遍歷會出現哪些情況?第一種完全匹配,返回true。第二種,有的不匹配,直接返回flase.第三種,遍歷結束,棧裡還有多餘的括號。

3.偽**。

1.建立乙個hash map,對映左右括號。

2.用陣列建立乙個棧。

3.遍歷字串,如果是map的key,將value入棧。不是,則說明是右括號,pop比較。

4.最後檢查棧是否為空

**實現:

/**

* @param s

* @return

*/var isvalid = function(s) {

const stack = ;

for(let i=0; i知識:

1.map的運用,可以用來配對。這裡的小技巧是:

入棧的是右括號,即key對應的value,方便後面比較。

20 有效括號

1.題目描述 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。2.示例 輸入 輸出 true輸入 輸出 false3.思路 可以採用棧來解決,第一步 判斷棧是否空,為空則進乙個括號,若不為空,則判斷當前括號和棧頂元素是否匹配,不...

20 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...

20 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...