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...