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.
Subscribe to see which companies asked this question
package leetcode;
import java.util.Stack;
/**
*
* @author Mouse
*
*/
public class Solution {
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '{' || c == '(' || c == '[') {// 遇到前括号就压栈
stack.push(c);
} else if (c == '}' || c == ')' || c == ']') {// 遇到后括号就出栈
if (stack.size() == 0) {
return false;
}
char cpop = stack.pop();
if (cpop == '{' && c == '}') {
continue;//继续for
}
if (cpop == '(' && c == ')') {
continue;
}
if (cpop == '[' && c == ']') {
continue;
}
return false;
}
}
return stack.size() == 0;
}
public static void main(String[] args) {
String s = "([])";
boolean flag = isValid(s);
System.out.println(flag);
}
}