Pila de Java

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
Inserte la descripción de la imagen aquí
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

  1. Toda la salida digital directamente
  2. 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.
  3. Todos los paréntesis de apertura se colocan en la pila.
  4. Si el paréntesis izquierdo está incluido en la pila, todos los operadores se insertan en la pila.
  5. 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.

Supongo que te gusta

Origin blog.csdn.net/qq_36008278/article/details/115173545
Recomendado
Clasificación