首页 > 代码库 > 20. Valid Parentheses

20. Valid Parentheses

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;    }}

 

20. Valid Parentheses