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.
Input: | "((" |
Output: | true |
Expected: | false |
括号匹配,栈的运用。
1.建栈:
Stack<Character> sk = new Stack<Character>();
2.测试栈是否为空:
sk.empty();
3.移除栈顶,并返回值:
sk.pop();
4.查看栈顶,不移除:
sk.peek();
5.压入栈顶:
sk.push();
package leetcode;
import java.util.Stack;
public class ValidParentheses {
public static boolean isValid(String s) {
boolean ans = true;
Stack<Character> sk = new Stack<Character>();
if (s == "" || s.length() == 0) return ans;
if (s.length() % 2 != 0) return false;
char[] chars = s.toCharArray();
for (int i = 0; i<chars.length; i++){
if (chars[i] == '{' || chars[i] == '[' || chars[i] == '('){
sk.push(chars[i]);
}
if (chars[i] == '}' ){
if (sk.empty()){
ans = false;
break;
}
if (sk.pop() == '{'){
ans = true;
}else {
ans = false;
break;
}
}
if (chars[i] == ']' ){
if (sk.empty()){
ans = false;
break;
}
if (sk.pop() == '['){
ans = true;
}else {
ans = false;
break;
}
}
if (chars[i] == ')' ){
if (sk.empty()){
ans = false;
break;
}
if (sk.pop() == '('){
ans = true;
}else {
ans = false;
break;
}
}
}
if (!sk.empty()) ans = false;
return ans;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(isValid("[["));
}
}