← 一覧へ戻る

回文の判定 LV2 ・ 20点

問題

英小文字だけからなる文字列 S が与えられます。S が回文(前から読んでも後ろから読んでも同じ並び)かどうかを判定してください。

例えば level は前から読んでも後ろから読んでも level なので回文です。hello は回文ではありません。

制約

入力

入力は以下の形式で標準入力から与えられます。

S

出力

S が回文なら YES、そうでなければ NO を 1 行に出力してください。記号はすべて半角とします。

入出力例

入力出力
level
YES
hello
NO

💡 学習アドバイス

「両端から中央へ」という、文字列処理の超定番テクニックを身につける問題です。

  1. 左端を指す位置 i と、右端を指す位置 j を用意する
  2. i 番目と j 番目の文字を比べる。違っていたら回文ではない
  3. 同じなら i を 1 つ右へ、j を 1 つ左へ動かす
  4. ij がすれ違うまで繰り返す。最後まで違いがなければ回文

文字列を逆さまにして元と比べる方法でも解けますが、上の「両端から攻める」方法は無駄がなく応用も利きます。長さが 1 のときも回文になることに注意して、いろいろな例で試してみましょう。

コーディング(ここで挑戦!)

下のエディタにコードを書き、「コンパイル・実行」で試し、「提出」で全テスト採点します。言語は C / C++ / Java から選べます。全テスト合格でこの問題はクリア(👑)です。

本番の編集・コンパイル・実行・採点は Exercode 上で行います。このページは予習・練習用です(実行は Wandbox の実コンパイラを利用)。