Skip to content

20. 有效的括号(easy) #32

Description

@devinxiang

描述

image

思路分析:

  1. 括号需要有效:
    • 满足是成对的;
    • 且左括号在前,右括号在后;
    • 位置是相对应的的。
  2. 实现思路:可以用一个栈来处理,循环处理字符串当遇到左括号,加入到栈中;当遇到右括号,判断栈顶的左括号与右括号是否对应,对应则移除左括号,不对应说明不合法;最后判断栈里面是否还剩余括号即可。
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    const stack = [];
    const map = {
        ')': '(',
        '}': '{',
        ']': '[',
    };

    for(let i = 0; i < s.length; i++) {
        const ele = s.substr(i, 1);
        // 如果是左括号添加进栈中
        if (!map[ele]) {
            stack.push(ele)
        }
        // 如果不是左括号,判断栈顶是不是对应的右括号,如果不是则不匹配返回错误
        // 如果是则匹配移除掉即可
        if (map[ele] && map[ele] !== stack.pop()) {
            return false;
        }
    }

    // 判断比较完的栈是否空的,空的则都为有效括号
    return stack.length === 0;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions