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.
思路:使用栈,java Stack类中 peek方法是查看栈顶元素而不移除它
1 public class Solution { 2 public boolean isValid(String s) { 3 // Start typing your Java solution below 4 // DO NOT write main() function 5 Stack<Character> stack = new Stack<Character>(); 6 int len = s.length(); 7 boolean flag = false; 8 for(int i = 0; i < len; i++){ 9 if(!stack.empty()){ 10 char top = stack.peek(); 11 char c = s.charAt(i); 12 13 if(!match(top, c)) 14 stack.push(c); 15 else{ 16 stack.pop(); 17 } 18 } else { 19 char c = s.charAt(i); 20 stack.push(c); 21 } 22 } 23 24 if(!stack.empty()) 25 return flag; 26 else{ 27 flag = true; 28 return flag; 29 } 30 } 31 32 boolean match(char a, char b){ 33 if(a == '(' && b == ')'){ 34 return true; 35 } else if(a == '{' && b == '}'){ 36 return true; 37 } else if(a == '[' && b == ']'){ 38 return true; 39 } else { 40 return false; 41 } 42 } 43 }