标签:20 log isValid 每日 stack length console true LeetCode
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。