有效的括号

(题目来源:力扣LeetCode)

题目:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。


解答:

//使用栈的先入后出的特点完成判断
class Solution {

    public boolean isValid(String s) {

        Stack<Character> stack = new Stack<>();

        char[] chars = s.toCharArray();

        //遍历所有元素

        for(char c : chars){

            //如果是左括号就把对应的右括号压栈

            if(c =='('){

                stack.push(')');

            }else if(c =='['){

                stack.push(']');

            }else if(c =='{'){

                stack.push('}');

            }else if(stack.isEmpty() || stack.pop()!=c){

                return false;

                //如果遇到右括号,此时栈为空,则无法匹配,返回false

                //如果遇到右括号,此时栈不为空,将栈顶元素弹出与括号比较,如果相等继续操作,如果不等返回false

            }

        }

        return stack.isEmpty();

        //当栈为空时,说明已经完全匹配,是有效括号;如果栈不为空,并不是完全匹配,不是有效括号。

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需...
    Shimmer_阅读 205评论 0 1
  • 自己解法 括号匹配问题,第一想法就是使用栈,左括号入栈,遇到匹配的右括号出栈,如果中间有不符合的右括号,直接返回f...
    justonemoretry阅读 170评论 0 0
  • 给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效字符串需满足:左...
    Shmily_k阅读 248评论 0 0
  • 判断括号是否有效 1.使用栈的先进后出,先把前括号对应的后括号压栈 当后面再遇到后括号的时候,只用比较相等就可以了...
    我还是老油条阅读 758评论 0 0
  • 之前写了两篇 感觉太简单的没什么意思 就一直搁下懒得写了 今天做题的时候碰到了个有意思的 就记录一下吧 有效的括号...
    Garvey叫兽阅读 573评论 0 0