Invertir una string usando Stack en Java
Esta publicación discutirá cómo revertir una string usando Stack en Java.
El siguiente ejemplo muestra cómo invertir una string con un Estructura de datos de stack en Java. Los siguientes son los pasos completos:
- Cree una stack vacía de caracteres.
- Convierta la string dada en una array de caracteres usando
String.toCharArray()
método y empuje cada carácter de él en la stack. - Elimine caracteres de la stack hasta que quede vacía y asígnelos nuevamente a la array de caracteres. Como la stack sigue el orden FILO, los caracteres se insertarán en el orden inverso.
- Finalmente, convierta la array de caracteres en una string usando
String.copyValueOf(char[])
y devolver la string formada.
El siguiente programa lo demuestra:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import java.util.Stack; class Main { // Método para invertir una string en Java usando una stack y una array de caracteres public static String reverse(String str) { // caso base: si la string es nula o está vacía if (str == null || str.equals("")) { return str; } // crea una stack de caracteres vacía Stack<Character> stack = new Stack<Character>(); // inserta todos los caracteres de la string dada en la stack char[] ch = str.toCharArray(); for (int i = 0; i < str.length(); i++) { stack.push(ch[i]); } // comienza desde el índice 0 int k = 0; // extraer caracteres de la stack hasta que esté vacía while (!stack.isEmpty()) { // asigna cada carácter reventado a la array de caracteres ch[k++] = stack.pop(); } // convierte la array de caracteres en una string y la devuelve return String.copyValueOf(ch); } public static void main(String[] args) { String str = "Reverse me!"; str = reverse(str); // la string es inmutable System.out.println("The reversed string is " + str); } } |
Resultado:
The reversed string is !em esreveR
También podemos usar StringBuilder
en lugar de una array de caracteres, como se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import java.util.Stack; class Main { // Método para invertir una cadena en Java usando una stack y StringBuilder public static String reverse(String str) { // caso base: si la string es nula o está vacía if (str == null || str.equals("")) { return str; } // crea una stack de caracteres vacía Stack<Character> stack = new Stack<Character>(); // inserta todos los caracteres de la string dada en la stack for (int i = 0; i < str.length(); i++) { stack.push(str.charAt(i)); } // extrae caracteres de la stack y los agrega a StringBuilder StringBuilder sb = new StringBuilder(); while (!stack.isEmpty()) { sb.append(stack.pop()); } // convierte `StringBuilder` a cadena y regresa return sb.toString(); } public static void main(String[] args) { String str = "Reverse me!"; str = reverse(str); // la string es inmutable System.out.println("The reversed string is " + str); } } |
Resultado:
The reversed string is !em esreveR
Se trata de invertir una string usando Stack en Java.