LeetCode 有效的括号 JS实现

题目描述

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

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

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

示例

输入: "()"
输出: 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('()');
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容