Javaで文字列内の文字ペアを入れ替えるプログラムの作成方法
この記事では、Javaを使って文字列内の指定した位置にある文字ペアを入れ替える方法について詳しく解説します。
Javaでは文字列は不変(イミュータブル)であるため、直接文字を変更することはできません。そこで、toCharArray()メソッドを使って文字列を文字配列(char配列)に変換します。これにより、配列の各要素にアクセスして自由に文字を入れ替えることが可能になります。
実行結果の例
入力文字列が「Java program」の場合、3番目と後ろから4番目の文字を入れ替えると、次のような出力が得られます。
入力文字列:Java program
入れ替え後の文字列:Javg proaram
アルゴリズム
処理の手順は以下の通りです。
ステップ1 - 開始する ステップ2 - 文字列型変数 input_string、char型配列 character、文字列オブジェクト result を宣言する ステップ3 - 値を定義する ステップ4 - toCharArray() メソッドで文字列を文字配列に変換する ステップ5 - 一時変数(temp)を使って2つの文字を入れ替える ステップ6 - 文字配列を再び文字列に戻す ステップ7 - 結果の文字列を表示する ステップ8 - 終了する
例1:mainメソッドにすべての処理を記述する方法
まず、すべての処理を「main」メソッド内にまとめて記述するシンプルな例を紹介します。
public class SwapCharacter {
public static void main(String args[]) {
String input_string = "Java program";
System.out.println("定義された文字列:" +input_string);
int i = 3, j = input_string.length() - 4;
char character[] = input_string.toCharArray();
char temp = character[i];
character[i] = character[j];
character[j] = temp;
String result = new String(character);
System.out.println("\n入れ替え後の文字列:" +result);
}
}出力
定義された文字列:Java program 入れ替え後の文字列:Javg proaram
例2:オブジェクト指向でメソッドに分割する方法
次に、オブジェクト指向プログラミングの考え方に基づいて、入れ替え処理を独立したメソッドとしてカプセル化した例を紹介します。この方法では、処理の再利用性が高まり、コードの可読性も向上します。
public class SwapCharacter {
static char[] swap(String input_string, int i, int j) {
char character[] = input_string.toCharArray();
char temp = character[i];
character[i] = character[j];
character[j] = temp;
return character;
}
public static void main(String args[]) {
String input_string = "Java program";
System.out.println("定義された文字列:" +input_string);
System.out.println("\n入れ替え後の文字列:");
System.out.println(swap(input_string, 3, input_string.length() - 4));
}
}出力
定義された文字列:Java program 入れ替え後の文字列: Javg proaram
まとめ
このように、toCharArray()で文字列をchar配列に変換すれば、一時変数を使って任意の位置の文字を簡単に入れ替えられます。小規模な処理ならmainメソッドに直接記述しても問題ありませんが、実用的なプログラムでは例2のようにメソッドとして分離しておくことで、コードの保守性や再利用性が大きく向上します。
-
Javaで文字(Character)のリストを文字列に変換する方法
Javaでは、Stream APIとCollectors.joining()を組み合わせることで、文字(Character)のリストを簡単に1つの文字列へ変換できます。この記事では、その基本的な手順とサンプルコードをわかりやすく解説します。 変換の手順 まず、次のような文字のリストがあったとします。 List<Character> list = Arrays.asList(W, e, l, c, o, m, e); このリストを文字列に変換するには、以下のようにstream()、map()、Collectors.joining()を使用します。 String string = li
-
Pythonで文字列の文字をペアごとに入れ替えるプログラム
文字列 s が与えられたとき、奇数番目の文字と偶数番目の文字をすべて入れ替えることを考えます。最終的には、隣り合う2文字ずつがペアで交換された新しい文字列を得ることができます。たとえば、入力が s = programming の場合、出力は rpgoarmmnig となります。解決の手順この問題は、以下のステップで解くことができます。まず、文字列 s を文字のリストに変換します。インデックス i を 0 からリストの長さ - 1 まで、2 ずつ増やしながらループします。各ループ内で、s[i] と s[i+1] の値を入れ替えます。最後に、リスト内のすべての文字を連結して文字列に戻し、結果として