Incluye solo un hecho '('
, ')'
, '{'
, '}'
, '['
, ']'
cadena, determina si la cadena es válida.
Una cadena válida debe cumplir:
- El paréntesis izquierdo debe cerrarse con el mismo tipo de paréntesis derecho.
- El paréntesis de apertura debe cerrarse en el orden correcto.
Tenga en cuenta que una cadena vacía se puede considerar una cadena válida.
Ejemplo 1:
Entrada: “()”
Salida: verdadero
Ejemplo 2:
Entrada: “() [] {}”
Salida: verdadero
Ejemplo 3:
Entrada: “(]”
Salida: falso
Ejemplo 4:
Entrada: “([)] "
Salida: falso
Ejemplo 5:
Entrada:" {[]} "
Salida: verdadero
public boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();//一种数据结构
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(' || s.charAt(i) == '{' || s.charAt(i) == '[') {
stack.push(s.charAt(i));
} else {
if (stack.isEmpty()) {
return false;
} else {
if (stack.peek() == '(' && s.charAt(i) != ')') {
return false;//返回栈顶元素
} else if (stack.peek() == '{' && s.charAt(i) != '}') {
return false;
} else if (stack.peek() == '[' && s.charAt(i) != ']') {
return false;
}
stack.pop();
}
}
}
return stack.isEmpty();
}