Apverskite eilutę Java
Šiame straipsnyje aptariami įvairūs būdai, kaip pakeisti eilutę Java programoje su pavyzdžiais.
Pavyzdžiai:
Prerequisite: String vs StringBuilder vs StringBuffer in Java
Toliau pateikiami keli įdomūs faktai apie String ir StringBuilder klases:
- Stygos objektai yra nekintantys.
- „Java“ eilutės klasė neturi reverse () metodo, tačiau „StringBuilder“ klasėje yra įmontuotas atvirkštinis () metodas.
- StringBuilder klasė neturi toCharArray() metodo, o String klasė turi toCharArray() metodą.
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
Įgyvendinimas:
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> |
Išvestis
Original word: Geeks Reversed word: skeeG
Eilutės konvertavimas į baitus: GetBytes() metodas naudojamas konvertuoti įvesties eilutę į baitus [].
Metodas:
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.
Įgyvendinimas:
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)); } }> |
Išvestis
skeeGrofskeeG
Naudojant integruotą atvirkštinį () metodą StringBuilder klasėje:
Styginių klasėje nėra reverse() metodo, turime konvertuoti įvesties eilutę į StringBuilder, o tai pasiekiama naudojant StringBuilder append metodą. Po to išspausdinkite atvirkštinės eilutės simbolius, nuskaitydami nuo pirmos iki paskutinės rodyklės.
Įgyvendinimas:
Java
// 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);> > }> }> |
Išvestis
skeeG rof skeeG
Eilutės konvertavimas į simbolių masyvą: Vartotojas įveda eilutę, kurią reikia pakeisti.
Metodas:
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.
Įgyvendinimas:
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]);> > }> }> |
Išvestis
skeeGroFskeeG
- Konvertuokite įvesties eilutę į simbolių masyvą naudodami toCharArray(): Konvertuokite įvesties eilutę į simbolių masyvą naudodami toCharArray() – įmontuotą eilučių klasės metodą. Tada nuskaitykite simbolių masyvą iš abiejų pusių, t. y. nuo pradžios indekso (kairėje), taip pat iš paskutinio indekso (dešinėje) vienu metu.
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.
Įgyvendinimas:
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(); } }> |
Išvestis
skeeG roF skeeG
- Naudojant ArrayList objektą: Konvertuokite įvesties eilutę į simbolių masyvą naudodami įtaisytąjį metodą toCharArray(). Tada pridėkite masyvo simbolius į objektą ArrayList. Java taip pat turi integruotą atvirkštinį () metodą rinkinių klasei. Kadangi Kolekcijos klasės reverse() metodas paima sąrašo objektą, norėdami pakeisti sąrašą, perduosime objektą ArrayList, kuris yra simbolių sąrašo tipas.
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.
Įgyvendinimas:
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());> > }> }> |
Išvestis
skeeG roF skeeG
StringBuffer naudojimas:
Styginių klasė neturi reverse() metodo, turime konvertuoti įvesties eilutę į StringBuffer, o tai pasiekiama naudojant atvirkštinį StringBuffer metodą.
Įgyvendinimas:
Java
// 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);> > }> }> |
Išvestis
skeeG
- Atvirkštinė eilutė priimant vartotojo įvestį
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);> > > }> }> > |
Išvestis
0
Aukščiau pateiktame kode mes iš esmės skaitome vartotojo eilutę prieš pradėdami iteracijos ciklą, kad sukurtume naują, apverstą eilutę. Klasės String funkcija charAt naudojama kiekvienam originalios eilutės simboliui atskirai nuo pabaigos nuskaityti, o operatorius + naudojamas joms sujungti į naują eilutę.
Stack naudojimas:
Krūvos idėja yra ta, kad pasieksime tik viršutinį krūvos elementą, todėl jį sudaro 2 veiksmai:
- stumkite visus simbolius į krūvą.
- iškelkite visus simbolius iš krūvos ir pridėkite prie laikinosios eilutės.
Žemiau pateikiamas pirmiau minėto metodo įgyvendinimas.
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> |
Išvestis
Reversed string is : skeeG roF skeeG
Laiko sudėtingumas: O(N) N yra eilutės ilgis
Pagalbinė erdvė: O(N) krūvai
Susijęs straipsnis: Įvairūs būdai pakeisti eilutę C/C++
Prie šio straipsnio prisidėjo Ponas. Somesh Awasthi .