20. Valid Parentheses
基础题目
建一个堆栈,对于这个字符串,如果是左括号就放到堆栈里面,如果是右括号,就弹出堆栈里的一个元素,如果此时堆栈是空的,肯定是不匹配的,如果弹出的不匹配,也返回false。做完以后看堆栈是不是正好的空的,如果是空的就返回true,否则就是false。
1 public boolean isValid(String s) { 2 if(s == null || s.length() == 0) { 3 return false; 4 } 5 Stack<Character> stack = new Stack<Character>(); 6 for(int i = 0; i < s.length(); i++) { 7 char c = s.charAt(i); 8 if(isLeft(c)) { 9 stack.push(c); 10 } else{ 11 if(stack.isEmpty()) { 12 return false; 13 } else { 14 char x = stack.pop(); 15 if(!isMatch(x, c)) { 16 return false; 17 } 18 } 19 } 20 } 21 return stack.isEmpty(); 22 } 23 24 private boolean isLeft(char c) { 25 if(c == '{' || c == '(' || c == '[') { 26 return true; 27 } else { 28 return false; 29 } 30 } 31 32 private boolean isMatch(char c1, char c2) { 33 if(c1 == '(' && c2 == ')') { 34 return true; 35 } 36 if(c1 == '[' && c2 == ']') { 37 return true; 38 } 39 if(c1 == '{' && c2 == '}') { 40 return true; 41 } 42 return false; 43 }