3力扣题做题笔记及复盘--20. 有效的括号(栈)

20. 有效的括号 - 力扣(LeetCode)

1、括号匹配是使用栈解决的经典问题。

题意其实就像我们在写代码的过程中,要求括号的顺序是一样的,有左括号,相应的位置必须要有右括号。

如果还记得编译原理的话,编译器在 词法分析的过程中处理括号、花括号等这个符号的逻辑,也是使用了栈这种数据结构。

再举个例子,linux系统中,cd这个进入目录的命令我们应该再熟悉不过了。

cd a/b/c/../../

这个命令最后进入a目录,系统是如何知道进入了a目录呢 ,这就是栈的应用(其实可以出一道相应的面试题了)

所以栈在计算机领域中应用是非常广泛的。

2、思路

如果是左括号就转变成右括号并入栈,如果是右括号就进行栈顶比较,一样就弹栈一个,不一样就return false;最后判断栈是否为空,stack.isEmpty();

3、代码

class Solution {
    public boolean isValid(String s) {
        
        Stack<Character> stack = new Stack<>();
        
        int size = s.length();

        for(int i=0;i<size;i++){
            char c = s.charAt(i);
            if(c == '['){
                stack.push(']');
            }else if(c == '{'){
                stack.push('}');
            }else if(c == '('){
                stack.push(')');
            }else if(stack.isEmpty() || c != stack.peek() ){
                return false;
            }else if( c == stack.peek()){
                stack.pop();
            }
        }

        return stack.isEmpty();
    }
}

4、总结

技巧:匹配问题,将左括号进行转变,然后和右括号进行比较,比较相同不相同。

 

posted @ 2022-05-22 17:38  jason饼干大怪兽  阅读(26)  评论(0)    收藏  举报