logo

Odwróć ciąg w Javie

W tym artykule omówiono różne sposoby odwracania ciągu w Javie wraz z przykładami.

Przykłady:



odwrócenie ciągu

Prerequisite:  String vs StringBuilder vs StringBuffer in Java>

Poniżej znajduje się kilka interesujących faktów na temat klas String i StringBuilder:

  1. Obiekty String są niezmienne.
  2. Klasa String w Javie nie posiada metody Reverse(), jednakże klasa StringBuilder ma wbudowaną metodę Reverse().
  3. Klasa StringBuilder nie ma metody toCharArray(), podczas gdy klasa String ma metodę 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>

Realizacja:



Jawa






// 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>

>

porównywalny ciąg
>

Wyjście

Original word: Geeks Reversed word: skeeG>

Konwersja ciągu na bajty: Metoda getBytes() służy do konwersji ciągu wejściowego na bajty [].

Metoda:

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.>

Realizacja:

Jawa




// 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)); } }>

>

>

Wyjście

skeeGrofskeeG>

Używając wbudowanej metody Reverse() klasy StringBuilder:

Klasa String nie posiada metody Reverse(), musimy przekonwertować ciąg wejściowy na StringBuilder, co osiąga się za pomocą metody append StringBuilder. Następnie wydrukuj znaki odwróconego ciągu, skanując od pierwszego do ostatniego indeksu.

Realizacja:

Jawa


funkcja chr w Pythonie



// 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);> >}> }>

>

>

Wyjście

skeeG rof skeeG>

Konwersja ciągu znaków na tablicę znaków: Użytkownik wprowadza ciąg, który ma zostać odwrócony.

Metoda:

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.>

Realizacja:

Jawa




// 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]);> >}> }>

>

>

Wyjście

skeeGroFskeeG>
  • Przekonwertuj ciąg wejściowy na tablicę znaków, używając toCharArray(): Przekonwertuj ciąg wejściowy na tablicę znaków za pomocą toCharArray() – wbudowanej metody klasy String. Następnie przeskanuj tablicę znaków jednocześnie z obu stron, tj. od indeksu początkowego (po lewej) i od ostatniego indeksu (po prawej).
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.>

Realizacja:

Jawa




// 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(); } }>

>

>

Wyjście

skeeG roF skeeG>
  • Używanie obiektu ArrayList: Przekonwertuj ciąg wejściowy na tablicę znaków, używając wbudowanej metody toCharArray(). Następnie dodaj znaki tablicy do obiektu ArrayList. Java ma również wbudowaną metodę Reverse() dla klasy Collections. Ponieważ metoda Reverse() klasy Collections pobiera obiekt listy, aby odwrócić listę, przekażemy obiekt ArrayList, który jest rodzajem listy znaków.
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.>

Realizacja:

Jawa




// 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());> >}> }>

0,04 jako ułamek
>

>

Wyjście

skeeG roF skeeG>

Używanie StringBuffera:

Klasa String nie posiada metody Reverse(), należy przekonwertować ciąg wejściowy na StringBuffer, co osiąga się poprzez zastosowanie metody odwrotnej StringBuffer.

Realizacja:

Jawa




// 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);> >}> }>

>

>

Wyjście

skeeG>
  • Odwracanie ciągu poprzez pobranie danych wejściowych od użytkownika

Jawa




/*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);> > >}> }> >

>

>

Wyjście

0>

W powyższym kodzie zasadniczo czytamy ciąg znaków od użytkownika przed rozpoczęciem pętli iteracyjnej w celu utworzenia nowego, odwróconego ciągu. Funkcja charAt klasy String służy do pobierania każdego znaku oryginalnego String z osobna od końca, a operator + służy do łączenia ich w nowy String.

Korzystanie ze stosu:

Ideą stosu jest to, że będziemy mieli dostęp tylko do najwyższego elementu stosu, zatem składa się on z 2 następujących kroków:

  1. wypchnij wszystkie znaki w stos.
  2. wyrzuć wszystkie znaki ze stosu i dołącz do ciągu tymczasowego.

Poniżej implementacja powyższego podejścia.

Jawa




leksykograficznie

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>

>

>

Wyjście

Reversed string is : skeeG roF skeeG>

Złożoność czasowa: O(N) N to długość sznurka

Przestrzeń pomocnicza: O(N) dla stosu

Powiązany artykuł: Różne metody odwracania ciągu w C/C++

Współautorem tego artykułu jest Pan. Somesh Awasthi .