У цій статті обговорюються різні способи перевернути рядок у Java з прикладами.
приклади:
Prerequisite: String vs StringBuilder vs StringBuffer in Java>
Нижче наведено кілька цікавих фактів про класи String і StringBuilder:
- Об’єкти String незмінні.
- Клас String у Java не має методу reverse(), однак клас StringBuilder має вбудований метод reverse().
- Клас StringBuilder не має методу toCharArray(), а клас String має метод 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>
Реалізація:
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> |
>
>Вихід
Original word: Geeks Reversed word: skeeG>
Перетворення рядка в байти: Метод getBytes() використовується для перетворення вхідного рядка в bytes[].
Метод:
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.>
Реалізація:
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)); } }> |
>
>Вихід
skeeGrofskeeG>
Використання вбудованого методу reverse() класу StringBuilder:
Клас String не має методу reverse(), нам потрібно перетворити вхідний рядок у StringBuilder, що досягається за допомогою методу append StringBuilder. Після цього роздрукуйте символи перевернутого рядка, скануючи від першого до останнього індексу.
Реалізація:
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);> > }> }> |
>
>Вихід
skeeG rof skeeG>
Перетворення рядка в масив символів: Користувач вводить рядок, який потрібно сторнувати.
Метод:
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.>
Реалізація:
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]);> > }> }> |
>
>Вихід
skeeGroFskeeG>
- Перетворіть вхідний рядок на масив символів за допомогою toCharArray(): Перетворіть вхідний рядок на масив символів за допомогою toCharArray() – вбудованого методу класу String. Потім проскануйте масив символів з обох боків, тобто одночасно від початкового індексу (ліворуч), а також від останнього індексу (праворуч).
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.>
Реалізація:
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(); } }> |
>
>Вихід
skeeG roF skeeG>
- Використання об’єкта ArrayList: Перетворіть вхідний рядок у масив символів за допомогою вбудованого методу toCharArray(). Потім додайте символи масиву в об’єкт ArrayList. Java також має вбудований метод reverse() для класу Collections. Оскільки метод reverse() класу Collections приймає об’єкт списку, щоб перевернути список, ми передамо об’єкт ArrayList, який є типом списку символів.
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.>
Реалізація:
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());> > }> }> |
>
>Вихід
skeeG roF skeeG>
Використання StringBuffer:
Клас String не має методу reverse(), нам потрібно перетворити вхідний рядок у StringBuffer, що досягається за допомогою зворотного методу StringBuffer.
Реалізація:
Java
список 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);> > }> }> |
>
>Вихід
skeeG>
- Реверсування рядка за допомогою введення від користувача
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);> > > }> }> > |
>
>Вихід
0>
У наведеному вище коді ми, по суті, читаємо рядок від користувача перед початком ітераційного циклу для створення нового інвертованого рядка. Функція charAt класу String використовується для отримання кожного символу вихідного рядка окремо з кінця, а оператор + використовується для об’єднання їх у новий рядок.
Використання стека:
Ідея стека полягає в тому, що ми матимемо доступ лише до верхнього елемента стека, тому він включає 2 кроки, як показано нижче:
- розмістити всі символи в стеку.
- вилучити всі символи зі стеку та додати до тимчасового рядка.
Нижче наведено реалізацію вищеописаного підходу.
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> |
>
>Вихід
Reversed string is : skeeG roF skeeG>
Часова складність: O(N) N – це довжина рядка
Допоміжний простір: O(N) для стека
Пов'язана стаття: Різні методи перевертання рядка в C/C++
Цю статтю надав Містер. Сомеш Авасті .