Java で文字列を反転させる方法

Mohammad Irfan 2023年10月12日
  1. Java の reverse() メソッドを用いた文字列の逆引き
  2. Java でカスタムコードを使用して文字列を反転する
  3. Java の append() メソッドを使用して文字列を反転する
  4. Java で再帰を使用して文字列を逆にする
  5. Java で Stack を用いて文字列を逆引きする
Java で文字列を反転させる方法

このチュートリアルでは、Java で文字列を逆引きする方法と、それを理解するためのコード例を紹介します。

文字列を逆引きするには、reverse()sorted()parallelSort() メソッドなどのように、いくつかの方法があります。例を見てみましょう。

Java の reverse() メソッドを用いた文字列の逆引き

この例では、StringBuilder クラスの reverse() メソッドを使って文字列を逆順に取得し、toString() メソッドを使って StringBuilder オブジェクトから文字列オブジェクトを取得します。以下の例を参照してください。

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "DelfStack";
    System.out.println(str);
    StringBuilder strb = new StringBuilder(str);
    str = strb.reverse().toString();
    System.out.println(str);
  }
}

出力:

DelfStack
kcatSfleD

Java でカスタムコードを使用して文字列を反転する

組み込みのメソッドを使用したくない場合は、ループを使用して文字列の文字をスワップし、さらに文字列に変換された char 配列に収集するカスタムコードを使用します。以下の例を参照してください。

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "DelfStack";
    System.out.println(str);
    char[] ch = str.toCharArray();
    int begin = 0;
    int end = ch.length - 1;
    char temp;
    while (end > begin) {
      temp = ch[begin];
      ch[begin] = ch[end];
      ch[end] = temp;
      end--;
      begin++;
    }
    str = new String(ch);
    System.out.println(str);
  }
}

出力:

DelfStack
kcatSfleD

Java の append() メソッドを使用して文字列を反転する

これは Java で文字列を反転させる別のアプローチです。ここでは、for ループ内で charAt()append() メソッドを用いて文字列を取得し、StringBuilder オブジェクトに格納します。以下の例を参照してください。

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "DelfStack";
    System.out.println(str);
    StringBuilder dest = new StringBuilder();
    for (int i = (str.length() - 1); i >= 0; i--) {
      dest.append(str.charAt(i));
    }
    System.out.println(dest);
  }
}

出力:

DelfStac
kcatSfleD

Java で再帰を使用して文字列を逆にする

再帰とは、関数が基本条件に達するまで何度も何度も自分自身を呼び出すテクニックです。以下の例のように、再帰を使って文字列を反転させることができます。

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "DelfStack";
    System.out.println(str);
    String reverseStr = reverseIt(str, str.length() - 1);
    System.out.println(reverseStr);
  }
  static String reverseIt(String str, int index) {
    if (index == 0) {
      return str.charAt(0) + "";
    }
    char letter = str.charAt(index);
    return letter + reverseIt(str, index - 1);
  }
}

出力:

DelfStack
kcatSfleD

Java で Stack を用いて文字列を逆引きする

文字列を逆にするには Stack クラスを用いることができます。Stackpush() メソッドを使って文字をスタックに集め、pop() メソッドを使って格納された文字を逆順に取得します。以下の例を参照してください。

import java.util.Stack;

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "DelfStack";
    System.out.println(str);
    Stack<Character> stack = new Stack<>();
    for (int i = 0; i < str.length(); i++) {
      stack.push(str.charAt(i));
    }
    StringBuilder strb = new StringBuilder();
    while (!stack.empty()) {
      strb.append(stack.pop());
    }
    System.out.println(strb);
  }
}

出力:

DelfStack
kcatSfleD

関連記事 - Java String