0404「回文を作ろう」
例題
たかしくんは回文ネタのフリップ芸人を推している。
文が本当に回文になっているかをチェックできるようにしたい。
任意の文字列を標準入力に入力したとき、それが回文なら「Yes」を、そうでないなら「No」を標準出力に出力するプログラムを作成しなさい。
実行例1
標準入力
たけやぶやけた
標準出力
Yes
実行例2
標準入力
おにぎりこげた
標準出力
No
サンプルコード
import java.util.Arrays; import java.util.Scanner; public class Ex_04_04 { public static void main(String[] args) { // 入力 Scanner scan = new Scanner(System.in); String str = scan.next(); // str を1文字ずつ strArray に格納する char[] strArray = str.toCharArray(); // strArray を逆順に reverseStrArray に格納する char[] reverseStrArray = new char[str.length()]; for(int i=0; i<str.length(); i++) { reverseStrArray[i] = strArray[str.length()-i-1]; } // 判定 String message; if(Arrays.equals(strArray, reverseStrArray)) message = "Yes"; else message = "No"; // 出力 System.out.println(message); } }
解説
toCharArray()
文字列を新しい文字配列に変換するメソッドです。
String str = "example"; char[] strArray = str.toCharArray();
としたとき、strArray には char 型の配列として [e, x ,a, m, p, l, e] が格納されています。
Arrays.equals(Object a, Object a2)
2つの配列 a と a2 が同等であるか比較するメソッドです。
配列が同等とは、両方の配列に同じ数の要素があり、対応する対の要素がすべて同等である場合です。
2つの配列が同等である場合は true を、そうでない場合は false を返します。
応用
入力が整数値のときはどうすればいいか考えてみましょう。
String.valueOf を使ってしまえば文字列として読み込んだかのようになりますけど…!