LeetCode每日一练【20】
Valid Parentheses
我的解法
我的第一次提交
介绍
介绍, 介绍个锤子, 又不难!
思路
-
创建栈
stack用来存储:(,[,{ -
遍历原始字符串
- 如果是
(,[,{, 就入栈stack - 如果是
), 就检查栈顶元素是否为(, 如果是就出栈 - 如果是
], 同2 - 如果是
}, 同2
- 如果是
-
检查指针
i=arr.length ?和stack = 0?, 如果都为true, 返回结果true
代码
/*
* @Author: fox
* @Date: 2022-05-03 08:44:53
* @LastEditors: fox
* @LastEditTime: 2022-05-03 10:32:41
* @Description: https://leetcode.com/problems/valid-parentheses/
*/
/**
* @description: Runtime: 68.92% Memory Usage: 56.34%
* @param {string} s
* @return {boolean}
*/
const parentheses = {
')' : '(',
']' : '[',
'}' : '{'
}
const isValid = (s, obj = parentheses) => {
const stack = [] // 栈
let i; // 指针
if (!s || s.length < 2) return false
for (i = 0; i < s.length; i++) {
if (s[i] === '(' || s[i] === '[' || s[i] === '{') {
stack.push(s[i])
} else if (obj.hasOwnProperty(s[i]) && stack[stack.length - 1] === obj[s[i]]) {
stack.pop()
} else {
break;
}
}
return i === s.length && stack.length === 0
};
let s = '()'
console.log(isValid(s)) // true
s = '()[]{}'
console.log(isValid(s)) // true
s = '(]'
console.log(isValid(s)) // false
s = '['
console.log(isValid(s)) // false

浙公网安备 33010602011771号