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.最后检查栈是否为空.
public class A20ValidParentheses {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for(int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if(ch == '(' || ch == '[' || ch == '{') {
stack.push(ch);
} else {
if(stack.isEmpty()) {
return false;
}
char top = stack.peek();
if(parenthesesMatching(top, ch)) {
stack.pop();
} else {
return false;
}
}
}
if(stack.isEmpty())
return true;
else
return false;
}
public boolean parenthesesMatching(char lch, char rch) {
if(lch == '(' && rch == ')')
return true;
if(lch == '[' && rch == ']')
return true;
if(lch == '{' && rch == '}')
return true;
return false;
}
}