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
标签:20,log,isValid,每日,stack,length,console,true,LeetCode 来源: https://www.cnblogs.com/mapodoufu/p/16217852.html