LeetCode.20 有效的括号

徘徊边缘 提交于 2019-11-26 02:52:37

题目链接:有效的括号

分析:

这里需要使用栈来进行操作

括号共分为三种:( )、{ }、[ ]

若要进行括号匹配,只需要把左括号全部压入栈中,再用右括号进行匹配( 遇到左括号压入栈,遇到右括号去进行判断匹配 )

栈中的元素不停的弹出,然后和右边的括号进行匹配

例如:栈中的元素是这样:( { [  此时的栈顶元素应该是 [,后面的括号用来和弹出的栈顶元素 [ 进行匹配

若匹配成功,则再次弹出元素,若匹配不成功,直接返回false

等到最后(此时还未弹出false,表示之前的括号都匹配成功),如果循环结束,栈中没有元素则表示全部匹配成功

代码实现:

public class ValidParentheses {
    public static boolean isValid(String s) {
        //1、申明一个stack
        Stack<Character> stack = new Stack<Character>();
        //遍历 s String本质上是char[]
        for(int i = 0 ; i < s.length() ; i++){
            char c = s.charAt(i);
            if(c == '{' || c == '[' || c == '('){
                //如果是{ [ (   压入栈中
                stack.push(c);
            }else{
                //  }  ]  )   进行比对
                // 判断此时栈是否为空
                if(stack.isEmpty()){
                    return false;
                }
                char topChar = stack.pop();
                if(c == ']' && topChar != '['){
                    return false;
                }
                if(c == '}' && topChar != '{'){
                    return false;
                }
                if(c == ')' && topChar != '('){
                    return false;
                }
            }
        }
        //如果循环结束,栈中没有元素则表示全部匹配成功
        return stack.isEmpty();
    }

    public static void main(String[] args) {
        System.out.println(isValid("(){}"));
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!