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 を使ってしまえば文字列として読み込んだかのようになりますけど…!