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.
题解:典型的栈的应用。遇到"({["中的一种就压栈,遇到")}]"中的一种就和栈顶元素比较,如果匹配,就继续循环,否则返回false。
代码如下:
1 public class Solution { 2 public boolean isEqual(char a,char b){ 3 return (a == ‘(‘ && b ==‘)‘)||(a == ‘[‘ && b ==‘]‘)||(a == ‘{‘ && b == ‘}‘); 4 } 5 public boolean isValid(String s) { 6 if(s == null || s.length() == 0) 7 return true; 8 Stack<Character> stack = new Stack<Character>(); 9 10 for(int i = 0;i < s.length();i++){ 11 if("({[".contains(String.valueOf(s.charAt(i)))) 12 stack.push(s.charAt(i)); 13 else { 14 if(stack.isEmpty() || !isEqual(stack.peek(),s.charAt(i))) 15 return false; 16 else 17 stack.pop(); 18 } 19 } 20 return stack.isEmpty(); 21 } 22 }
【leetcode】Valid Parentheses,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/sunshineatnoon/p/3855237.html