給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。javascript
有效字符串需知足:java
左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 注意空字符串可被認爲是有效字符串。數組
最好的方法是利用棧的數據結構來解決這個問題,也算是比較經典的解法。
先定義好一個hashmap數據結構
const map = new Map([
[')', '('],
['}', '{'],
[']', '['],
])
複製代碼
在定義一個空數組,依次遍歷字符串,若是匹配到了就消除該元素。循環結束若是數組依舊爲空,則全部括號都獲得了匹配,返回true,不然返回false。ui
var isValid = function(s) {
const map = new Map([
[')', '('],
['}', '{'],
[']', '['],
])
const stack = []
for(let i = 0; i < s.length; i ++) {
if(stack.length) {
if(stack[stack.length - 1] === map.get(s[i])) {
stack.pop()
} else {
stack.push(s[i])
}
} else {
stack.push(s[i])
}
}
if(stack.length) {
return false
}
return true
};
複製代碼