リンク:https://ac.nowcoder.com/acm/contest/908/G
質問の意味:
回文はそれが、右から左に、右だけでなく、左からまったく同じ読みの文字列で、左右対称の文字列です。例えば、「A」、」ABA」、 『アバ』回文と 『ABC』、」AABB」はありませんされています。
のは、新しい関数f(複数可)を定義してみましょう。
いくつかの文字列s、F(S)のための最も長いパリンドロームサブストリングの長さです。
今、あなたがf(s)が1よりも偉大であるかどうかを、指定した文字列sの決定する必要があります。
文字列が小文字のみが含まれていますね。
アイデア:
ラインでこの回文文字列ABA、同様のAA探し
コード:
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 typedefの長い長いLL。 const int型MAXN = 3E5 + 10。 const int型MOD = 1E9 + 7。 N INT、M、K、T。 メインINT() { CIN >> N。 文字列s; cinを>>秒; ブールフラグ= FALSE。 (; iがN-1 <I ++は、I = 1 INT)のための { (S [I] == S [I-1] || S [I-1] == S [I + 1])場合 { フラグ=真; ブレーク; } } もし、(S [N-1] == S [N-2]) フラグ= TRUE。 IF(フラグ) COUT << "YES" << ENDL。 他の 裁判所未満<< "NO" << 0を返します。 }