Acest articol discută diferite moduri de a inversa un șir în Java cu exemple.
Exemple:
Prerequisite: String vs StringBuilder vs StringBuffer in Java>
Următoarele sunt câteva fapte interesante despre clasele String și StringBuilder:
- Obiectele String sunt imuabile.
- Clasa String în Java nu are metoda reverse(), cu toate acestea, clasa StringBuilder are încorporată metoda reverse().
- Clasa StringBuilder nu are metoda toCharArray(), în timp ce clasa String are metoda 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>
Implementare:
Java
// 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> |
>
>Ieșire
Original word: Geeks Reversed word: skeeG>
Conversia șirului în octeți: Metoda getBytes() este folosită pentru a converti șirul de intrare în octeți[].
Metodă:
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.>
Implementare:
Java
// 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)); } }> |
java convertește un întreg în șir
>
>Ieșire
skeeGrofskeeG>
Folosind metoda reverse() încorporată a clasei StringBuilder:
Clasa String nu are metoda reverse(), trebuie să convertim șirul de intrare în StringBuilder, care se realizează prin utilizarea metodei append a StringBuilder. După aceea, tipăriți caracterele șirului inversat scanând de la primul până la ultimul index.
Implementare:
Java
cât de mare este ecranul computerului meu
// 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);> > }> }> |
>
>Ieșire
skeeG rof skeeG>
Convertirea șirului în matrice de caractere: Utilizatorul a introdus șirul care urmează să fie inversat.
Metodă:
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.>
Implementare:
Java
// 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]);> > }> }> |
>
>Ieșire
skeeGroFskeeG>
- Convertiți șirul de intrare în matrice de caractere folosind toCharArray(): Convertiți șirul de intrare în matrice de caractere folosind toCharArray() - metoda încorporată a clasei String. Apoi, scanați matricea de caractere din ambele părți, adică din indexul de început (stânga), precum și din ultimul index (dreapta) simultan.
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.>
Implementare:
Java
// 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(); } }> |
>
>Ieșire
skeeG roF skeeG>
- Folosind obiectul ArrayList: Convertiți șirul de intrare în matricea de caractere folosind metoda încorporată toCharArray(). Apoi, adăugați caracterele matricei în obiectul ArrayList. Java are și metoda reverse() construită pentru clasa Collections. Deoarece metoda reverse() clasei Colecții preia un obiect listă, pentru a inversa lista, vom trece obiectul ArrayList care este un tip de listă de caractere.
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.>
Implementare:
Java
// 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());> > }> }> |
>
>Ieșire
skeeG roF skeeG>
Folosind StringBuffer:
Clasa String nu are metoda reverse(), trebuie să convertim șirul de intrare în StringBuffer, care se realizează prin utilizarea metodei inverse a StringBuffer.
Implementare:
Java
hiba bukhari
// 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);> > }> }> |
>
>Ieșire
skeeG>
- Inversarea șirului prin preluarea de la utilizator-
Java
/*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);> > > }> }> > |
>
>Ieșire
0>
În codul de mai sus, citim în esență un șir de caractere de la utilizator înainte de a începe o buclă de iterație pentru a crea un șir nou, inversat. Funcția charAt a clasei String este folosită pentru a prelua fiecare caracter al șirului original individual de la sfârșit, iar operatorul + este folosit pentru a le concatena într-un șir nou.
Folosind Stack:
Ideea de stivă este că vom accesa doar elementul superior al unei stive, astfel încât acesta include 2 pași, după cum urmează:
- împinge toate personajele din stivă.
- scoateți toate caracterele din stivă și adăugați la șirul temp.
Mai jos este implementarea abordării de mai sus.
Java
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> |
>
>Ieșire
Reversed string is : skeeG roF skeeG>
Complexitatea timpului: O(N) N este lungimea șirului
Spațiu auxiliar: O(N) pentru stivă
Articol înrudit: Diferite metode de a inversa un șir în C/C++
mylivericket
Acest articol este contribuit de Domnul. Somesh Awasthi .