logo

Inversați un șir în Java

Acest articol discută diferite moduri de a inversa un șir în Java cu exemple.

Exemple:



sfoară-invers

Prerequisite:  String vs StringBuilder vs StringBuffer in Java>

Următoarele sunt câteva fapte interesante despre clasele String și StringBuilder:

  1. Obiectele String sunt imuabile.
  2. Clasa String în Java nu are metoda reverse(), cu toate acestea, clasa StringBuilder are încorporată metoda reverse().
  3. 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ă:

  1. împinge toate personajele din stivă.
  2. 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 .