描述
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Every close bracket has a corresponding open bracket of the same type.
例子
text
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Example 3:
Input: s = "(]"
Output: false
约束 Constraints:
- 1 <= s.length <= 104
s
consists of parentheses only()[]{}
.
JS实现
javascript
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let stack = [];
const pairs = {'}':'{',']':'[',')':'('}
for(let c of s){
if( !pairs[c] ){
// 碰到左括号压栈
stack.push(c)
}else if( !stack.length || stack.pop() != pairs[c]){
// 如果碰到右括号找不到左括号(包含 栈为空 场景)则说明输入S不是有效括号
return false
}
}
// 根据栈内是否还存在左括号判断 输入S 是否有效的括号
return !stack.length
};