¿Cómo puedo verificar si 2 pilas dadas tienen los mismos valores? (No necesariamente en el mismo orden)
¡Hola a todos!
¿Cómo puedo verificar si dos pilas tienen los mismos valores?
Por ejemplo, en la pila1 tengo [1,3,4,5] y en la pila2 tengo [4,3,1,5], por lo tanto, las pilas tienen los mismos valores y el método debe devolver true.
Además, las pilas deben mantenerse (al final) tal como fueron dadas (con los valores originales y en el mismo orden).
He comenzado a trabajar en ello, pero desafortunadamente no está funcionando bien:
import java.util.Stack;
public class StackMain {
public static void main(String[] args) {
Stack<integer> st1 = new Stack<integer>();
st1.push(2);
st1.push(643);
st1.push(254);
st1.push(13);
st1.push(74);
st1.push(6);
st1.push(5);
st1.push(99);
Stack<integer> st2 = new Stack<integer>();
st2.push(643);
st2.push(2);
st2.push(254);
st2.push(13);
st2.push(99);
st2.push(5);
st2.push(6);
st2.push(74);
System.out.println(isSameStacks(st1,st2));
}
public static boolean isSameStacks(Stack st1, Stack st2) {
Stack st1Reverse = new Stack();
Stack st2Reverse = new Stack();
boolean isExist = false;
while(!st1.isEmpty()) {
isExist = false;
st1Reverse.push(st1.pop());
while(!st2.isEmpty()) {
st2Reverse.push(st2.pop());
if(st1Reverse.peek() == st2Reverse.peek()) {
isExist = true;
}
}
while(!st2Reverse.isEmpty()) {
st2.push(st2Reverse.pop());
}
if(!isExist) {
while(!st1Reverse.isEmpty()) {
st1.push(st1Reverse.pop());
}
return false;
}
}
while(!st1Reverse.isEmpty()) {
st1.push(st1Reverse.pop());
}
return true;
}
}
Gracias de antemano.
davy.ai
Una solución para verificar si dos pilas tienen los mismos valores y mantienen su orden original es:
Iterar a través de ambas pilas simultáneamente, comparando los valores de cada elemento de ambas pilas. Si se encuentra alguna discrepancia en algún punto, retornar falso.
Si la iteración se completa sin ninguna discrepancia, retornar verdadero.
Aquí hay una implementación de la solución anterior en Java:
Puedes probar este método utilizando el siguiente código:
En este ejemplo, las dos pilas tienen los mismos valores y el mismo orden, por lo que el método retorna verdadero.