LeetCode - 020 - 有效的括号(valid-brackets)

# LeetCode - 020 - 有效的括号(valid-brackets)

[TOC]

# 一、题目

# 二、解题思路·栈

  • 算法
  1. 初始化栈 S,依次处理表达式的每个括号。
  2. 如果遇到开括号,我们只需将其推到栈上即可。这意味着我们将稍后处理它,让我们简单地转到前面的 子表达式。
  3. 如果我们遇到一个闭括号,那么我们检查栈顶的元素。如果栈顶的元素是一个 相同类型的 左括号,那么我们将它从栈中弹出并继续处理。否则,这意味着表达式无效。
  4. 如果到最后我们剩下的栈中仍然有元素,那么这意味着表达式无效。

# 三、算法实现

var isValid = function(s){

    if(!s.length) return true;
    if(s.length === 1) return false;

    let judge = {
        '[':']',
        '(':')',
        '{':'}'
    };
    let param = s.split('');
    let len = param.length;
    let stack = [];
    for(let i = 0;i<len;i++){
        if(!stack.length){
            if(param[i] === ']'||param[i] === ')'||param[i] === '}'){
                return false;
            }else{
                stack.push(param[i]);
                i++;
            }
        }
        if(judge[stack[stack.length-1]] === param[i]){
            stack.pop();
        }else{
            stack.push(param[i]);
        }
    }
    if(stack.length === 0) return true;
    else return false;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31