Pila: es un tipo de tabla lineal, y está restringido a insertar y eliminar operaciones en un extremo de la tabla lineal. El final que permite la inserción y el borrado se llama la parte superior de la pila, y el final que no permite la inserción y el borrado se llama el final de la
pila . Aunque la pila tiene solo dos operaciones simples, empujar y hacer estallar, podemos lograr más efectos complejos. Por
ejemplo, compruebe si los paréntesis en la cadena '{[()]}' pueden coincidir con lo anterior.
Hablemos de la idea: cuando {, [, (coincide, se coloca en la pila. Coincide) ,],} está fuera
Implementación de código de comparación de pila
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
String s;
for (int i = 0; i < N; i++) {
s = scan.next();
if (isMatch(s)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
private static boolean isMatch(String s) {
Stack<Character> sk = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
sk.push('(');
}
if (s.charAt(i) == ')') {
if (!sk.isEmpty() && sk.pop() == '(')
continue;
else
return false;
}
if (s.charAt(i) == '[') {
sk.push('[');
}
if (s.charAt(i) == ']') {
if (!sk.isEmpty() && sk.pop() == '[')
continue;
else
return false;
}
}
if (sk.isEmpty())
return true;
else
return false;
}
}
¿Y cómo calcula la computadora esta fórmula?
1+ (5 + 2) X6
Sabemos que primero debemos calcular los corchetes 5 + 2 = 7, luego el número de multiplicación 7 * 6 = 42, y finalmente el signo más 42 + 1 = 43.
Cómo usar la pila para cálculos de alta velocidad? Primero, redacte algunas reglas
- Toda la salida digital directamente
- La prioridad del operador es mayor que el empuje hacia la pila. De lo contrario, extraiga todos los operadores con mayor o la misma precedencia de la pila o hasta el paréntesis, y luego inserte todos los operadores en la pila.
- Todos los paréntesis de apertura se colocan en la pila.
- Si el paréntesis izquierdo está incluido en la pila, todos los operadores se insertan en la pila.
- Si es un paréntesis derecho, la pila se abre continuamente hasta que el paréntesis izquierdo coincide
Después de estas pocas reglas, obtenemos la expresión de sufijo "152 + 6X +". Usamos la pila nuevamente para empujar cualquier número en la pila, y cualquier operador saca la pila dos veces,
por lo que 152 se inserta en la pila y encuentra el signo +, y se saca 2 de la pila y luego sale 5. La pila se opera para obtener 7, y el resultado se empuja hacia la pila. Luego, 6 también se inserta en la pila, y cuando encuentra el número X, se saca dos veces, se saca 6 de la pila
y luego se saca 7 para realizar la operación para obtener 42, y el resultado se empuja a la pila. El último es el signo +, la pila se saca dos veces, primero se saca 42 y luego se saca la pila para el cálculo. La pila está vacía y el resultado final es 43.