CodeGym /Java Blog /ランダム /Java で文字列を反転するさまざまな方法
John Squirrels
レベル 41
San Francisco

Java で文字列を反転するさまざまな方法

ランダム グループに公開済み
Java の文字列は文字の配列とも言えます。Javaの文字列はテキスト/文字を保存するために使用されます。Java プログラミング言語では、文字列はオブジェクトとみなされます。Java では、文字列は String という名前の事前定義されたクラスのオブジェクトです。すべての文字列変数は、Java の String クラスのインスタンスです。したがって、Java の文字列は、他のプログラミング言語の int や char のようなプリミティブ型ではないことが理解できます。この記事では、Java で文字列を反転する方法を説明します。その前提条件は、Java で文字列を作成する方法、組み込み文字列メソッドの基本概念、ループを使用して操作を実行する方法を知っていることです。

記事の範囲

- この記事では、Java で文字列を反転するさまざまな方法について説明します。- Java で文字列を反転できる、事前に構築されたメソッドもいくつか紹介します。- Java の各リバース メソッドの時間と空間の複雑さについても説明します。- Java で文字列を反転するにはいくつかの方法があり、それぞれに長所と短所があります。この記事では、Java で文字列を反転するために最も一般的に使用されるメソッドのいくつかを検討します。

導入

Java では文字列は不変オブジェクトであり、Java では文字列は単なる文字のシーケンスです。Java の単一行の文字列は一重引用符で定義され、Java の複数行の文字列は三重引用符で定義されます。Java には利用可能な文字列メソッドがいくつかありますが、今日この記事では、Java で文字列を反転するさまざまな方法について説明します。Java プログラミング言語は、世界で最も広く使用されているプログラミング言語の 1 つであり、そのシンプルさと使いやすさで知られています。プログラマーが文字列に対して実行する最も一般的な操作の 1 つは、文字列を反転することです。この記事では、Java で文字列を反転するさまざまな方法について説明します。まず、Java で for ループを使用する最も一般的な方法について読んでみましょう。

for ループを使用して Java の文字列を反転します。

この手法は、for ループを使用して Java で文字列を反転する最も簡単な方法の 1 つです。文字列の文字を末尾から先頭まで繰り返して、新しい文字列変数に追加できます。for ループを 使用して文字列を反転する方法の例を次に示します。
//in the above code we have reversed the string using a for loop in java
public class reverseofthestring {
  public static void main(String[] args) {

    String s1 = "java is fun";
      // we are creating the second string to store the reversed string and print it while iterating the for loop
    String s2 = "";

    for(int i = s1.length()-1; i>=0; i--)
    {
        // in the above line we have stored the reversed string by iterating the for loop from the last index and stored the value in the second string created s2.
      s2 = s2 + s1.charAt(i);
    }

    System.out.print("The reversed string of the '"+s1+"' is: " );
    System.out.println(s2);
  }
}
出力
The reversed string of the s1 is:nuf si avaj
上記のコードでは、最初に s1 という名前の文字列の入力を取得し、空の文字列 s2 を作成してから、最後のインデックスから for ループを繰り返し、その文字列内の各文字の値を保存しました。よりわかりやすく明確な説明を得るには、エディターで上記のコードを実行してください。上記のコードの時間計算量は O(N) で、n 個の要素すべてを反復したため、上記のコードの空間計算量は O(N) です。次に、文字列ビルダーを使用して文字列を反転する次のプロセスについて詳しく説明します。

文字列ビルダークラスを使用して文字列を反転する

StringBuilder クラスを使用して、Java で文字列を逆にすることもできます。StringBuilder クラスは、文字列を反転するために使用できる reverse() メソッドを提供します。Java StringBuilder クラスの reverse() メソッドを使用して、この文字シーケンスを逆のシーケンスに置き換えます。Java のStringBuilderクラス には toCharArray() メソッドがありませんが、String クラスには toCharArray() メソッドがあります。例を使って理解してみましょう。
public class reverseusingbuilder {
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder("abc");
        System.out.println("The original string1 is  = " + s1);
        StringBuilder s2 = new StringBuilder("cab");
        System.out.println("The original string2 is = " + s2);
         StringBuilder s3 = new StringBuilder("wer");
        System. out.println("The original string3 is = " + s3);
        // reversing of stringbuilder
        System.out.println("The reverse of the string is reverse1 = " + s1.reverse());
        System.out.println("The reverse of the string2 is reverse2 = " + s2.reverse());
         System.out.println("The reverse of the string3 is reverse2 = " + s3.reverse());
    }
}
出力
The original string1 is  = abc
The original string2 is  =cab
The original string3 is  =wer
The reversed string1 is  = cba
The reversed string2 is  = bac
The reversed string3 is  =rew
このメソッドでは、組み込みの文字列ビルダー クラスを使用して文字列を反転したことがわかります。この方法は、文字列を 1 回通過するだけで済むため、非常に効率的です。ただし、新しい StringBuilder オブジェクトを作成する必要があるため、オーバーヘッドが追加される可能性があります。この方法は比較的シンプルで理解しやすいですが、文字列を複数回通過し、文字ごとに新しい文字列を作成する必要があるため、他の方法より効率が劣る可能性があります。よりわかりやすく明確な説明を得るには、エディターで上記のコードを実行してください。ここで、再帰手法を使用して文字列を反転する別の方法を見てみましょう。

再帰を使用して文字列を反転します

再帰は、関数がそれ自体を呼び出す手法です。再帰を使用すると、文字列をより小さな部分文字列に分割することで文字列を反転できます。Java における再帰は、メソッドがそれ自体を継続的に呼び出すプロセスです。再帰を使用して Java で文字列を反転するには、まず文字列から最初の文字を削除し、次にその文字を文字列の末尾に追加する必要があります。その後、入力文字列が空になるまで上記の手順を繰り返す必要があります。例を使ってこれを理解しましょう。
public class reverse string
{
//in this line we are writing the recursive function to reverse a string
public String reverse string(String s1)
{
//first we will check if the string is empty or not
if(s1.isEmpty())
{
System. out.println("String is empty.")
//if the above condition is true then it returns the same string as if the string is empty itself then we cannot reverse the string
return s1;
}
else
{
return reverseString(s1.substring(1))+s1.charAt(0);
}
}
public static void main(String[] args)
{
reversestring q1 = new reversestring();
String res1 = q1.reverseString("JAVA IS FUN");
String res2 = q1.reverseString("STRINGS OBJECTS JAVA");
String res3 = q1.reverseString("IMMUTABLE CLASS OBJECTS");
System.out.println(res1);
System.out.println(res2);
System.out.println(res3);
}
}
出力
NUF SI AVAJ
AVAJ STCEJBO SGNIRTS
STCEJBO SSALC ELBATUMMI
したがって、上記では、再帰を使用して文字列を反転したことがわかります。最初に文字列が空かどうかを確認し、文字列が空の場合、反転できる文字は存在しません。この方法は文字列を 1 回通過するだけなので、for ループ方法よりも効率的です。ただし、再帰 の使用が含まれるため、より複雑で理解しにくい場合もあります。よりわかりやすく明確な説明を得るには、エディターで上記のコードを実行してください。Java で再帰を使用して文字列を反転する方法の別の例を見てみましょう。
public static String reverseusingrecursion(String s1) {
    if (s1.length() == 1) {
        return s1;
    }
    //We have applied recursion in this line
    return s1.charAt(s1.length() - 1) + reverseUsingRecursion(s1.substring(0, s1.length() - 1));
}
ここで、配列を使用して Java で文字列を反転する別の方法について読んでみましょう。

配列を使用してJavaの文字列を反転する

文字列を文字配列に変換し、その配列を変更してから文字列に戻すことで、文字列を逆にすることもできます。まず、指定された文字列と同じサイズの空の文字配列を作成する必要があります。次に、その文字配列を指定された文字列の文字で逆方向に埋め、最後に次を使用して文字配列を文字列に変換する必要があります。 copy メソッドを呼び出して返します。例を使ってこれを理解しましょう。
public class Main
{
    // In this Method of conversion we have to reverse a string in Java using a character array
    public static String reverse(String s1)
    {
        // we have to check if the string is empty or not and return if the string is null or empty
        if (s1 == null || s1.equals("")) {
            return s1;
        }
 // if it is equal to empty then we will simply print the string and break it.
        // else we will find the string length
        int len = str.length();

        // and then we have to create a character array of the same size as that of the string to store the value after reversing
        char[] new_arr = new char[n];

        // and by iterating the loop backward we have to fill the character array backward with characters in the string
        for (int i = 0; i < len; i++) {
            new_arr[len - i - 1] = str.charAt(i);
        }

        // and in the final step after reversing we have to convert the character array to string and return it
        to return String.copy value of(new_arr);
    }

    public static void main(String[] args)
    {
        // taking a string input for reverse
        String s1 = "JAVA IS FUN";

        // In this line we are calling the reverse function and reversing the string
        str = reverse(str);

        System.out.println("The reversed string is " + s1);
    }
}
出力
NUF SI AVA
このメソッドでは、文字列を既知の文字配列に反転する必要があるため、まず文字列が空かどうかを確認し、文字列が null か空かどうかを返し、空に等しい場合は文字列を出力します。 Break そうでない場合は、文字列の長さを調べます。次に、文字列と同じサイズの文字配列を作成して、反転後の値を保存する必要があります。また、ループを逆方向に反復することで、文字配列を文字列内の文字で逆方向に埋める必要があります。そして、反転後の最後のステップでは、文字配列を文字列に変換して返す必要があります。よりわかりやすく明確な説明を得るには、エディターで上記のコードを実行してください。次のステップでは、Stream API を使用して Java で文字列を反転することもできます。それでは、いくつかの例を使用して、それらについて詳しく読んでみましょう。

Stream API を使用して Java の文字列を反転します。

Java 8 では、コレクションに対して関数型の操作を実行するために使用できる Stream API が導入されました。Stream API を使用すると、文字列を文字のストリームに変換し、そのストリームを反転してから文字列に戻すことで、文字列を反転できます。Java では、さまざまなストリームとコレクターを使用して文字列を反転できます。まず文字列を入力し、次に StringBuilder オブジェクトに String 全体の Map を使用し、同時に StringBuilder クラスの reverse() メソッドを使用して文字列を反転します。最後に、ストリームを使用して反転された文字列を収集します。collect() メソッドとコレクター。join() メソッドでは、元の文字列と反転された文字列の両方をその長さとともに出力します。例を使ってこれを理解しましょう。
public static String reverseUsingStream(String str) {
    return str. chars()
              .mapToObj(c -> (char) c)
              .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
              .reverse()
              .toString();
}
この例では、Java ストリームとコレクターを使用して Java の文字列を反転しました。よりわかりやすく明確な説明を得るには、エディターで上記のコードを実行してください。次に、スタックを使用して文字列を反転する方法を見てみましょう。次に、例を使用して詳しく説明します。

スタックを使用して文字列を反転します

Java で文字列を反転する別の方法は、スタックを使用することです。このアイデアは、入力文字列の各文字をスタックにプッシュし、スタックから文字をポップして反転された文字列を取得することです。次に、例を使用してこれについて詳しく説明します。
public static String reverse string(String input) {
    Stack<character> stack = new Stack<>();
    for (int i = 0; i < input.length(); i++) {
        stack.push(input.charAt(i));
    }
    StringBuilder sb = new StringBuilder();
    while (!stack.isEmpty()) {
        sb.append(stack.pop());
    }
    return sb.toString();
}

</character>
上の例では、最初に空のスタックを作成し、次に文字列を反転してスタック内に要素を挿入しました。この方法はシンプルで理解しやすく、効率的です。よりわかりやすく明確な説明を得るには、エディターで上記のコードを実行してください。

結論

1 つ目の方法は、StringBuilder クラスを使用する方法です。このクラスには、元の文字列を逆にした新しい文字列を返す reverse() メソッドが組み込まれています。2 番目の方法は for ループを使用するもので、元の文字列を char 配列に変換し、その配列を逆順に反復処理し、対応する文字を新しい char 配列に割り当て、最後にその char 配列を使用して新しい文字列を作成します。3 番目の方法は再帰を使用する方法です。再帰関数を呼び出し、文字列の最初の文字と残りの文字の反転部分文字列を連結することで問題を解決します。4 番目の方法は、配列を使用して Java の文字列を反転する方法です。5 番目のメソッドでは、ストリーム API と Java コレクターを使用して文字列を反転し、最後のメソッドではスタックを使用して Java の文字列を反転しました。これらの方法にはそれぞれ長所と短所があり、方法の選択は問題の特定の要件とプログラマの好みによって異なります。全体として、これらのメソッドは、文字列操作における Java の柔軟性と多用途性を示しています。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION