ABC237C
ABC237C の解説
解答コード
https://atcoder.jp/contests/abc237/submissions/29052747
問題
文字列の先頭に,任意の数だけ'a'をつけることで,与えられた文字列を回文にできるかどうか判定する問題です.
解説
考え方は,4つのステップからなります.
- 文字列Sの先頭と語尾にいくつのaが連続しているか調べる
- 先頭にある連続したaの個数が語尾に連続するaの個数以下である
- Sの先頭と語尾にある連続するaを除く
- 残った文字列Sが回文か調べ,回文であれば題意を満たす
概要は下図.
まず,文字列Sについて回文かどうかの判定をする関数を作成します.
回文かどうかということは,文字列を逆順にしても同じであることを意味します.
厳密には,文字列の半分の長さまでを判定すればよいです.
標準入力を読み込みます.
文字の先頭と語尾のaの長さを数えます.
もし,語尾(右側)のaの長さが先頭(左側)より短い場合は,題意を満たしません.
なぜなら,aを追加できるのは先頭だけだからです.
さらに,先頭にあるaと語尾のaを除いた残りのブロックが回文である必要があります.
以上,ABC237Cの解法でした.
コメント,ブックマークよろしくお願いします!!