美文网首页Leetcode 简单
LeetCode Simple_20 有效括号

LeetCode Simple_20 有效括号

作者: 天才一般的幼稚 | 来源:发表于2020-01-01 13:16 被阅读0次

    问题描述

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。

    示例

    输入: "()"
    输出: true
    输入: "()[]{}"
    输出: true
    输入: "(]"
    输出: false
    输入: "([)]"
    输出: false
    输入: "{[]}"
    输出: true

    思路

    栈在括号匹配中的运用。所有左括号全部入栈,所有右括号与栈顶元素比较,匹配成功栈顶元素出栈,否则匹配失败。

    class Solution {
        public boolean isValid(String s) {
            int len = s.length(), index = 1;
            if(len == 0){
                return true;
            }
            Stack<Character> stack = new Stack<Character>();
            stack.push(s.charAt(0));
            while(index < len){
                if(stack.empty()){
                    stack.push(s.charAt(index));
                } else {
                    char peek = stack.peek();
                    if(peek == '(' && s.charAt(index) == ')'){
                        stack.pop();
                    } else if(peek == '[' && s.charAt(index) == ']'){
                        stack.pop();
                    } else if(peek == '{' && s.charAt(index) == '}'){
                        stack.pop();
                    } else if(peek == '(' || peek == '[' || peek == '{'){
                        stack.push(s.charAt(index));
                    } else {
                        return false;
                    }
                }
                index ++;
            }
            if(stack.empty()){
                return true;
            } else{
                return false;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:LeetCode Simple_20 有效括号

        本文链接:https://www.haomeiwen.com/subject/sggwoctx.html