1. paizaラーニングトップ
  2. レベルアップ問題集
  3. MP・KMPメニュー(言語選択)
  4. 問題一覧
  5. 問題 1 : 一致する接頭辞と接尾辞 1

MP・KMPメニューのサムネイル
問題 1 : 一致する接頭辞と接尾辞 1(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

英小文字からなる長さ 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

1 行目には文字列の長さを表す整数 N が与えられ、2 行目には文字列 S が与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

S の N 個の接頭辞と N 個の接尾辞のどちらにも含まれる文字列のうち、最長のものの長さを表す整数を 1 行で出力してください。
ただし、最後には改行を入れ、
余計な文字や空白、空行を出力しないようにしてください。

条件

すべてのテストケースにおいて、以下の条件をみたします。
・2 ≦ N ≦ 500
・S は英小文字のみからなる文字列

入力例1

11
abracadabra

出力例1

4

問題一覧へ戻る

ページの先頭へ戻る