Questo articolo discute diversi modi per invertire una stringa in Java con esempi.
Esempi:

Prerequisite: String vs StringBuilder vs StringBuffer in Java>
Di seguito sono riportati alcuni fatti interessanti sulle classi String e StringBuilder:
- Gli oggetti di String sono immutabili.
- La classe String in Java non ha il metodo reverse(), tuttavia, la classe StringBuilder ha il metodo reverse() integrato.
- La classe StringBuilder non ha il metodo toCharArray(), mentre la classe String ha il metodo toCharArray().
1. The idea is to traverse the length of the string 2. Extract each character while traversing 3. Add each character in front of the existing string>
Implementazione:
Giava
// java program to reverse a word> import> java.io.*;> import> java.util.Scanner;> class> GFG {> >public> static> void> main (String[] args) {> > >String str=>'Geeks'>, nstr=>''>;> >char> ch;> > >System.out.print(>'Original word: '>);> >System.out.println(>'Geeks'>);>//Example word> > >for> (>int> i=>0>; i { ch= str.charAt(i); //extracts each character nstr= ch+nstr; //adds each character in front of the existing string } System.out.println('Reversed word: '+ nstr); } } //Contributed by Tiyasa> |
>
>Produzione
Original word: Geeks Reversed word: skeeG>
Conversione di stringhe in byte: Il metodo getBytes() viene utilizzato per convertire la stringa di input in bytes[].
Metodo:
1. Create a temporary byte[] of length equal to the length of the input string. 2. Store the bytes (which we get by using getBytes() method) in reverse order into the temporary byte[] . 3. Create a new String abject using byte[] to store result.>
Implementazione:
Giava
// Java program to ReverseString using ByteArray.> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'techcodeview.com'>;> >// getBytes() method to convert string> >// into bytes[].> >byte>[] strAsByteArray = input.getBytes();> >byte>[] result =>new> byte>[strAsByteArray.length];> >// Store result in reverse order into the> >// result byte[]> >for> (>int> i =>0>; i result[i] = strAsByteArray[strAsByteArray.length - i - 1]; System.out.println(new String(result)); } }> |
>
>Produzione
skeeGrofskeeG>
Utilizzando il metodo reverse() integrato della classe StringBuilder:
La classe String non ha il metodo reverse(), dobbiamo convertire la stringa di input in StringBuilder, cosa che si ottiene utilizzando il metodo append di StringBuilder. Successivamente, stampa i caratteri della stringa invertita eseguendo la scansione dal primo all'ultimo indice.
Implementazione:
Giava
// Java program to ReverseString using StringBuilder> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'Geeks for Geeks'>;> >StringBuilder input1 =>new> StringBuilder();> >// append a string into StringBuilder input1> >input1.append(input);> >// reverse StringBuilder input1> >input1.reverse();> >// print reversed String> >System.out.println(input1);> >}> }> |
>
>Produzione
skeeG rof skeeG>
Conversione di una stringa in un array di caratteri: L'utente inserisce la stringa da invertire.
Metodo:
1. First, convert String to character array by using the built in Java String class method toCharArray(). 2. Then, scan the string from end to start, and print the character one by one.>
Implementazione:
Giava
// Java program to Reverse a String by> // converting string to characters one> // by one> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'GeeksForGeeks'>;> >// convert String to character array> >// by using toCharArray> >char>[] try1 = input.toCharArray();> >for> (>int> i = try1.length ->1>; i>=>0>; i--)> >System.out.print(try1[i]);> >}> }> |
>
>Produzione
skeeGroFskeeG>
- Converti la stringa di input in un array di caratteri utilizzando toCharArray(): Converti la stringa di input in un array di caratteri utilizzando il metodo toCharArray() integrato della classe String. Quindi, scansiona l'array di caratteri da entrambi i lati, ovvero dall'indice iniziale (a sinistra) e dall'ultimo indice (a destra) contemporaneamente.
1. Set the left index equal to 0 and right index equal to the length of the string -1. 2. Swap the characters of the start index scanning with the last index scanning one by one. After that, increase the left index by 1 (left++) and decrease the right by 1 i.e., (right--) to move on to the next characters in the character array . 3. Continue till left is less than or equal to the right.>
Implementazione:
Giava
// Java program to Reverse a String using swapping> // of variables> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'Geeks For Geeks'>;> >char>[] temparray = input.toCharArray();> >int> left, right =>0>;> >right = temparray.length ->1>;> >for> (left =>0>; left // Swap values of left and right char temp = temparray[left]; temparray[left] = temparray[right]; temparray[right] = temp; } for (char c : temparray) System.out.print(c); System.out.println(); } }> |
>
>Produzione
skeeG roF skeeG>
- Utilizzando l'oggetto ArrayList: Converti la stringa di input nell'array di caratteri utilizzando il metodo integrato toCharArray(). Quindi, aggiungi i caratteri dell'array nell'oggetto ArrayList. Java ha anche integrato il metodo reverse() per la classe Collections. Poiché il metodo reverse() della classe Collection accetta un oggetto elenco, per invertire l'elenco passeremo l'oggetto ArrayList che è un tipo di elenco di caratteri.
1. We copy String contents to an object of ArrayList. 1. We create a ListIterator object by using the listIterator() method on the ArrayList object. 2. ListIterator object is used to iterate over the list. 3. ListIterator object helps us to iterate over the reversed list and print it one by one to the output screen.>
Implementazione:
Giava
// Java program to Reverse a String using ListIterator> import> java.lang.*;> import> java.io.*;> import> java.util.*;> // Class of ReverseString> class> ReverseString {> >public> static> void> main(String[] args)> >{> >String input =>'Geeks For Geeks'>;> >char>[] hello = input.toCharArray();> >List trial1 =>new> ArrayList();> >for> (>char> c : hello)> >trial1.add(c);> >Collections.reverse(trial1);> >ListIterator li = trial1.listIterator();> >while> (li.hasNext())> >System.out.print(li.next());> >}> }> |
>
>Produzione
skeeG roF skeeG>
Utilizzando StringBuffer:
La classe String non ha il metodo reverse(), dobbiamo convertire la stringa di input in StringBuffer, cosa che si ottiene utilizzando il metodo inverso di StringBuffer.
Implementazione:
Giava
dizionario c#
// Java program to demonstrate conversion from> // String to StringBuffer and reverse of string> import> java.lang.*;> import> java.io.*;> import> java.util.*;> public> class> Test {> >public> static> void> main(String[] args)> >{> >String str =>'Geeks'>;> >// conversion from String object to StringBuffer> >StringBuffer sbr =>new> StringBuffer(str);> >// To reverse the string> >sbr.reverse();> >System.out.println(sbr);> >}> }> |
>
>Produzione
skeeG>
- Inversione della stringa prendendo input dall'utente-
Giava
/*package whatever //do not write package name here */> import> java.io.*;> import> java.util.Scanner;> class> GFG {> >public> static> void> main (String[] args) {> >Scanner scanner =>new> Scanner(System.in);> >String Str = scanner.nextLine();> >char>[] arr = Str.toCharArray();> > >String rev =>''>;> > >for>(>int> i = Str.length() ->1>; i>=>0>; i--)> >{> >rev = rev + Str.charAt(i);> >}> > >System.out.println(rev);> > >}> }> > |
>
>Produzione
0>
Nel codice precedente, stiamo essenzialmente leggendo una String dall'utente prima di avviare un ciclo di iterazione per creare una nuova String invertita. La funzione charAt della classe String viene utilizzata per recuperare ogni carattere della String originale individualmente dalla fine e l'operatore + viene utilizzato per concatenarli in una nuova String.
Utilizzando la pila:
L'idea dello stack è che accederemo solo all'elemento superiore di uno stack, quindi include 2 passaggi come segue:
- spingere tutti i personaggi in pila.
- estrai tutti i caratteri dallo stack e aggiungili alla stringa temporanea.
Di seguito è riportata l'implementazione dell'approccio di cui sopra.
Giava
import> java.util.*;> class> GFG {> >public> static> void> main(String[] args) {> > >String s=>'Geeks For Geeks'>;> > >//initializing a stack of type char> >Stack stack=>new> Stack();> > >for>(>char> c:s.toCharArray())> >{> >//pushing all the characters> >stack.push(c);> >}> > >String temp=>''>;> > >while>(!stack.isEmpty())> >{> >//popping all the chars and appending to temp> >temp+=stack.pop();> >}> > >System.out.println(>'Reversed string is : '>+temp);> > >}> }> //This code is contributed by aeroabrar_31> |
>
>Produzione
Reversed string is : skeeG roF skeeG>
Complessità temporale: O(N) N è la lunghezza della stringa
Spazio ausiliario: O(N) per stack
Articolo correlato: Diversi metodi per invertire una stringa in C/C++
Questo articolo è stato fornito da Sig. Somesh Awasthi .