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号
浙公网安备 33010602011771号