标签:
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; } }
标签:
原文地址:http://www.cnblogs.com/Machelsky/p/5902285.html