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.

思路:最重要的是检查如果有一个右边的符号,那左边肯定对应它的一个左边符号。这样用stack做就最符合。但是要检查特殊情况,例如只有一个右边符号,检查stack是不是空。另一种情况是左边符号的个数大于右边符号,循环结束后检查是不是空。

public class Solution {
    public boolean isValid(String s) {
        if(s.length()==0)
        {
            return true;
        }
        Stack<Character> res=new Stack<Character>();
    for(int i=0;i<s.length();i++)
    {
        if(s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='[')
        {
            res.push(s.charAt(i));
        }
        else
        {  
            if(res.isEmpty())
            {
                return false;
            }
            if(s.charAt(i)==')')
            {
                if(res.pop()!='(')
                {
                    return false;
                }
            }
            else if(s.charAt(i)=='}')
            {
                if(res.pop()!='{')
                {
                    return false;
                }
            }
            else if(s.charAt(i)==']')
            {
                if(res.pop()!='[')
                {
                    return false;
                }
            }
        }
    }
    if(!res.isEmpty())
    {
        return false;
    }
    return true;
    }
}

 

posted on 2016-09-24 01:45  Machelsky  阅读(120)  评论(0)    收藏  举报