美文网首页
LeetCode 有效的括号 JS实现

LeetCode 有效的括号 JS实现

作者: 飞翔_ZZX1997 | 来源:发表于2018-09-04 17:10 被阅读0次

题目描述

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串

示例

输入: "()"
输出: true

输入: "()[]{}"
输出: true

输入: "(]"
输出: false

输入: "([)]"
输出: false

输入: "{[]}"
输出: true

思路

遇到左括号进行入栈,遇到右括号判断栈顶元素是否与当前字符匹配,如果匹配则出栈,否则返回false,最后检查栈是否为空,如果为空说明完全匹配,返回true,否则返回false。JavaScript实现利用数组的pushpop方法实现元素的入栈和出栈。

实现代码

var isValid = function(s) {
var sub = [];
var len = s.length;
for (var i = 0; i < len; i++) {
    if (s[i] === '(' || s[i] === '[' || s[i] === '{') { //遇到左括号添加进数组
        sub.push(s[i]);
    } else if (s[i] === ')') {
        if (sub[sub.length - 1] === '(') { //遇到右括号判断数组最后一个元素是否与当前元素匹配
            sub.pop(); //匹配则删除数组最后一个元素
        } else {
            return false; //否则返回false
        }
    } else if (s[i] === ']') {
        if (sub[sub.length - 1] === '[') {
            sub.pop();
        } else {
            return false;
        }
    } else {
        if (sub[sub.length - 1] === '{') {
            sub.pop();
        } else {
            return false;
        }
    }
}
if (sub.length == 0) return true;
else return false;
};
var result = isValid('()');

相关文章

网友评论

      本文标题:LeetCode 有效的括号 JS实现

      本文链接:https://www.haomeiwen.com/subject/rqqnwftx.html