0
点赞
收藏
分享

微信扫一扫

LeetCode经典算法题no.20 有效括号

勇敢乌龟 2022-04-05 阅读 33
java算法

题目:有效括号

题目描述:

样例展示:

辅助工具:栈(stack)。

我们将读取到的符号依次入栈,栈具有先进后出的特性,一旦左右括号匹配成功,则 pop出栈,全部顺利匹配成功,栈中无元素,才返回true,其余皆false。

我们为什么会想到栈呢?

例如当出现 '(' '(' ')' 时,我们要怎么告诉计算机右边括号是和哪个左括号进行匹配呢,而利用栈就能保证依次有序的对元素进行匹配

代码展示:

class Solution {
    public boolean isValid(String s) {
       char [] c = s.toCharArray(); //将字符转换成字符数组
        Stack<Character> stack = new Stack<>();
        for(char ch:c) {
            if(ch=='(' || ch=='{' || ch=='[') {
                stack.push(ch); //入栈
            }
            else if(ch==')') {
                if(stack.empty() ||stack.pop()!= '(' ) {
                   return false;  
                }
            }else if(ch=='}') {
                if(stack.empty() ||stack.pop()!='{'){ //栈为空则无匹配项
                   return false; 
                } 
            }else if(ch==']') {
                if(stack.empty() ||stack.pop()!='['){
                    return false;
                } 
            }
        }
        return stack.isEmpty()? true :false ;  //判断是否全部匹配成功
    }
}
举报

相关推荐

0 条评论