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.
Solution:
1 public class Solution { 2 public boolean isValid(String s) { 3 Stack<Character> stack = new Stack<Character>(); 4 5 for (int i=0;i<s.length();i++){ 6 char cur = s.charAt(i); 7 if (cur=='(' || cur=='[' || cur=='{') 8 stack.push(cur); 9 else { 10 if (stack.isEmpty()) return false; 11 char pre = stack.pop(); 12 if (!isMatch(pre,cur)) return false; 13 } 14 } 15 16 if (!stack.isEmpty()) return false; 17 else return true; 18 19 } 20 21 public boolean isMatch(char a, char b){ 22 if ((a=='(' && b==')') || (a=='[' && b==']') || (a=='{'&&b=='}')) 23 return true; 24 else return false; 25 } 26 }