LeetCode 刷题记录

题目:Valid Parentheses

难度:easy

使用语言:java

英语描述:

Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

中文描述:

由于只包含字符的字符串'('')''{''}''['']',确定输入字符串是有效的。

括号必须关闭以正确的顺序,"()"并且"()[]{}"都是有效的,但"(]""([)]"没有。

 

代码:

class Solution {
    public boolean isValid(String s) {
        if(s.length()==0||s.length()==1) 
            return false;
        
        
        //加入一个标记,若栈加入元素,则+1,否则-1
        int flag =0 ;
        
        
        char[] ch = s.toCharArray();
        
        Stack<Character> stack = new Stack<Character>(); 
        
        for(char c:ch){
            //如果当前字符为'{','{','['
            if(c=='{'||c=='('||c=='[')
            {
                flag++;
                stack.push(c);
            }
            //如果当前字符不是'{','{','['
            else{
                //如果stack为空,返回false
                if(stack.empty()) return false;
                //取出栈顶元素,小心报错,会有栈为空的错误
                char temp = stack.pop();
                //依次进行判断,如果符合条件标记-1,不符合返回false
                if(temp=='{')
                {
                    if(c!='}')
                        return false;
                    flag--;
                }
                else if(temp=='(')
                {
                    if(c!=')')
                        return false;
                    flag--;
                }
                else if(temp=='[')
                {
                    if(c!=']')
                        return false;
                    flag--;
                }
            }
        }
        //判断栈为空或者flag是否为0
       if(stack.empty()&&flag==0)
           return true;
        else
            return false;
    }
}

 

posted on 2018-04-02 23:06  老汉三旬  阅读(111)  评论(0)    收藏  举报

导航