この記事では、Java で文字列を反転するさまざまな方法を例とともに説明します。
例:
Prerequisite: String vs StringBuilder vs StringBuffer in Java>
以下は、String クラスと StringBuilder クラスに関する興味深い事実です。
- String のオブジェクトは不変です。
- Java の String クラスには 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 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 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>
StringBuilder クラスの組み込み reverse() メソッドを使用します。
String クラスには reverse() メソッドがないため、入力文字列を StringBuilder に変換する必要があります。これは StringBuilder の append メソッドを使用して実現されます。その後、最初から最後のインデックスまでをスキャンして、反転した文字列の文字を出力します。
実装:
ジャワ
// 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 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>=>> > System.out.print(try1[i]);> > }> }> |
>
>出力
skeeGroFskeeG>
- toCharArray() を使用して、入力文字列を文字配列に変換します。 String クラスの組み込みメソッドである toCharArray() を使用して、入力文字列を文字配列に変換します。次に、文字配列を両側から、つまり開始インデックス (左) と最後のインデックス (右) から同時にスキャンします。
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 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 には、Collections クラス用の reverse() メソッドも組み込まれています。 Collections クラスの reverse() メソッドはリスト オブジェクトを受け取るため、リストを反転するには、文字のリストの一種である 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 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 の reverse メソッドを使用して実現されます。
実装:
ジャワ
// 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);> > }> }> |
>
>
Javaの同等のインターフェース出力
skeeG>
- ユーザーからの入力を取得して文字列を反転する
ジャワ
/*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>=>> > {> > rev = rev + Str.charAt(i);> > }> > > System.out.println(rev);> > > }> }> > |
>
>出力
0>
上記のコードでは、基本的に、反復ループを開始して新しい反転文字列を作成する前に、ユーザーから文字列を読み取ります。 String クラスの charAt 関数は、元の String の各文字を末尾から個別に取得するために使用され、+ 演算子はそれらを新しい String に連結するために使用されます。
スタックの使用:
スタックの考え方は、スタックの最上位要素のみにアクセスするため、次の 2 つのステップが含まれるということです。
- すべての文字をスタックにプッシュします。
- スタックからすべての文字をポップし、一時文字列に追加します。
以下は、上記のアプローチの実装です。
ジャワ
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++ で文字列を反転するさまざまな方法
この記事は次の寄稿者です 氏ソメシュ・アワスティ 。