Javaで文字列を反転させるその他の方法
Javaで文字列を反転させる
Javaにおいて、文字列を反転させる方法はいくつかあります。ここでは、そのうちの2つを紹介します。
StringBuilderクラスを使用する
String originalString = "Hello, world!";
StringBuilder reversedString = new StringBuilder(originalString);
reversedString.reverse();
S tring reversedResult = reversedString.toString();
System.out.println(reversedResult); // Output: !dlrow ,olleH
StringBuilder
クラスは文字列操作に最適化されたクラスです。reverse()
メソッドを使用して文字列を反転します。toString()
メソッドを使用して、反転された文字列をString型に変換します。
char配列を使用する
String originalString = "Hello, world!";
char[] charArray = originalString.toCharArray();
int left = 0;
int right = charArray.length - 1;
while (left < right) {
char temp = charArray[left];
charArray[left] = charArray[right];
charArray[right] = temp;
left++;
ri ght--;
}
String reversed Result = new String(charArray);
System.out.println(reversedResult); // Output: !dlrow ,olleH
- 文字列をchar配列に変換します。
- 両端から文字を交換しながら、配列の中身を反転させます。
- 反転されたchar配列から新しいStringオブジェクトを作成します。
String originalString = "Hello, world!";
StringBuilder reversedString = new StringBuilder(originalString);
reversedString.reverse();
S tring reversedResult = reversedString.toString();
System.out.println(reversedResult); // Output: !dlrow ,olleH
コード解説:
String originalString = "Hello, world!";
: 元の文字列を定義します。StringBuilder reversedString = new StringBuilder(originalString);
:StringBuilder
オブジェクトを作成し、元の文字列をコピーします。reversedString.reverse();
:StringBuilder
オブジェクトのreverse()
メソッドを使用して、文字列を反転します。String reversedResult = reversedString.toString();
: 反転された文字列をString
型に変換し、reversedResult
変数に格納します。System.out.println(reversedResult);
: 反転された文字列を出力します。
String originalString = "Hello, world!";
char[] charArray = originalString.toCharArray();
int left = 0;
int right = charArray.length - 1;
while (left < right) {
char temp = charArray[left];
charArray[left] = charArray[right];
charArray[right] = temp;
left++;
ri ght--;
}
String reversed Result = new String(charArray);
System.out.println(reversedResult); // Output: !dlrow ,olleH
char[] charArray = originalString.toCharArray();
: 元の文字列をchar
配列に変換します。int left = 0; int right = charArray.length - 1;
: 配列の両端のインデックスを定義します。while (left < right) { ... }
: 両端のインデックスが交わるまでループを繰り返します。char temp = charArray[left];
: 左端の文字を一時的に保存します。charArray[left] = charArray[right];
: 右端の文字を左端のインデックスに代入します。charArray[right] = temp;
: 一時的に保存した左端の文字を右端のインデックスに代入します。left++; right--;
: 両端のインデックスを更新します。String reversedResult = new String(charArray);
: 反転されたchar
配列から新しいString
オブジェクトを作成します。
Stream APIを使用する
String originalString = "Hello, world!";
String reversedResult = originalString.chars()
.mapToObj(c -> (char) c)
.reduce("", (s, c) -> c + s);
System.out.println(reversedResult); // Output: !dlrow ,olleH
chars()
メソッドを使用して、文字列をint
値のストリームに変換します。mapToObj()
メソッドを使用して、int
値をchar
オブジェクトに変換します。reduce()
メソッドを使用して、ストリームの要素を結合し、新しい文字列を作成します。結合の際に、逆順に結合することで文字列を反転します。
Recursive関数を使用する
public static String reverseStringRecursive(String str) {
if (str.isEmpty()) {
return str;
}
return reverseStringRecursive(str.substring(1)) + str.cha rAt(0);
}
String originalString = "Hello, world!";
String reversedResult = reverseStringRecursive(originalString);
System.out.println(reversedResult); // Output: !dlrow ,olleH
- 再帰関数を使用して、文字列を反転します。
- 文字列が空であれば、そのまま返します。
- それ以外の場合は、文字列の最初の文字を除いた部分の反転結果と、最初の文字を結合して返します。
java string