有效的括号

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12616154.html

有效的括号(45min)

题目链接:https://leetcode-cn.com/problems/valid-parentheses/

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true
示例 2:

输入: "()[]{}"
输出: true
示例 3:

输入: "(]"
输出: false
示例 4:

输入: "([)]"
输出: false
示例 5:

输入: "{[]}"
输出: true

题解:

        方法:栈的运用。

        思路:遇到左括号入栈,遇到右括号把栈顶元素和右括号匹配,如果括号匹配则继续匹配下一个括号,不匹配则返回false。

        注意:栈不为空时也是返回false,这说明栈中还有未完成匹配的左括号。

   代码如下:

class Solution {
    public boolean isValid(String s) {
        int len=s.length();
        Stack<Character> stack=new Stack<>();
        for(int i=0;i<len;i++)
        {//满足条件入栈
            if(s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='[')
                stack.push(s.charAt(i));
            else//不满足条件时,判断当前括号和栈顶元素是否匹配,这里有三种情况
               {
                    if(stack.isEmpty())//先判断栈是否为空
                         return false;
                    if(s.charAt(i)==')'&&stack.peek()=='(')
                         stack.pop();
                    else if( s.charAt(i)==']'&&stack.peek()=='[')
                         stack.pop();
                    else if( s.charAt(i)=='}'&&stack.peek()=='{')
                         stack.pop();
                    else 
                        return false;
               }
           
        }
      return stack.isEmpty(); 

    }
}

 

posted @ 2020-04-01 21:44  萍2樱释  阅读(126)  评论(0编辑  收藏  举报