題目
難度級(jí)別:簡單
給定一個(gè)只包括 '('窖铡,')'疗锐,'{','}'费彼,'['滑臊,']' 的字符串,判斷字符串是否有效箍铲。
有效字符串需滿足:
左括號(hào)必須用相同類型的右括號(hào)閉合简珠。
左括號(hào)必須以正確的順序閉合。
注意空字符串可被認(rèn)為是有效字符串虹钮。
示例 1:
輸入: "()"
輸出: true
示例 2:
輸入: "()[]{}"
輸出: true
示例 3:
輸入: "(]"
輸出: false
示例 4:
輸入: "([)]"
輸出: false
示例 5:
輸入: "{[]}"
輸出: true
解題思路:
這道題運(yùn)用了棧的方法解決聋庵。將輸入進(jìn)的字符串轉(zhuǎn)化為數(shù)組,遍歷數(shù)組芙粱,對(duì)每一個(gè)值依次入棧祭玉,并且使用一個(gè)變量存儲(chǔ)待出棧的值所需要的括號(hào),當(dāng)待入棧得符號(hào)與待出棧所需得符號(hào)相同時(shí)春畔,則進(jìn)行出棧脱货。最后判斷數(shù)組長度若等于0返回true,否則返回false律姨。
const isValid = function(s) {
const arr = s.split('')
const stack = []
let currentNeedSymbol = ""
for (let i = 0; i < arr.length; i++) {
const currentSymbol = arr[i]
if (currentNeedSymbol === currentSymbol) {
stack.pop()
currentNeedSymbol = transform(stack[stack.length-1])
}else {
stack.push(arr[i])
currentNeedSymbol = transform(arr[i])
}
}
return stack.length === 0 ? true : false
};
const transform = function(s) {
switch (s) {
case '(': return ')'
case '{': return '}'
case '[': return ']'
default: break;
}
}
題目來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-parentheses