問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
英小文字からなる長さ N の文字列 S が与えられます。
文字列 S に対して、接頭辞/接尾辞を以下のように定義します。
・文字列 S の 接頭辞とは、S の末尾から 1 文字以上取り除いてできる部分文字列のことです。
・文字列 S の 接尾辞とは、S の先頭から 1 文字以上取り除いてできる部分文字列のことです。
ただし文字列 S の部分文字列とは、S の先頭と末尾から 0 文字以上取り除いて得られる文字列を指し、接頭辞/接尾辞は空文字列 φ を含みます。
S の接頭辞、接尾辞はそれぞれ N 種類存在します。
S の N 個の接頭辞と N 個の接尾辞のどちらにも含まれる文字列のうち、最長のものの長さを出力してください。
ただし、空文字列の長さは 0 とします。
たとえば、S = aabaab
の接頭辞は { φ
, a
, aa
, aab
, aaba
, aabaa
} の 6 つであり、接尾辞は { φ
, b
, ab
, aab
, baab
, abaab
} の 6 つなので、
両方に含まれる中で長さが最大のものは aab
であり、答えは 3 となります。
入力は以下のフォーマットで与えられます
N
S
S の N 個の接頭辞と N 個の接尾辞のどちらにも含まれる文字列のうち、最長のものの長さを表す整数を 1 行で出力してください。
ただし、最後には改行を入れ、
余計な文字や空白、空行を出力しないようにしてください。
すべてのテストケースにおいて、以下の条件をみたします。
・2 ≦ N ≦ 500
・S は英小文字のみからなる文字列
11
abracadabra
4