1. paizaラーニングトップ
  2. レベルアップ問題集
  3. ローリングハッシュメニュー(言語選択)
  4. 問題一覧 Python3編
  5. (問題 7) 同じ部分文字列 Python3編

ローリングハッシュメニューのサムネイル
(問題 7) 同じ部分文字列 Python3編(paizaランク S 相当)

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

問題

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

(部分文字列の一致判定について)



部分文字列の一致判定も問題 5 と同じような方法で計算が出来ます。

実際に行ってみましょう。

(問題)



長さ N の英大文字列 S = S_1S_2S_3...S_N が与えられます。次を満たす正整数 k の最大値を求めてください。ただし、存在しない場合は 0 を出力してください。

  • S_{i,i + k - 1} = S_{j,j + k - 1} となる i, j (1 ≦ i < j ≦ N - k + 1) が存在する。ただし、S_{L,R} はS の L 文字目から R 文字目までの部分文字列を意味する。
  • 入力される値

    入力は以下のフォーマットで与えられます。

    N
    S

  • 1 行目には 1 つの整数 N が与えられます。

  • 2 行目には 1 つの文字列 S が与えられます。

  • 入力は合計で 2 行からなり、入力値最終行の末尾に改行が 1 つ入ります。

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

    答えを 1 行で出力してください。

    条件

    すべてのテストケースにおいて、以下の条件をみたします。


    • 2 ≦ N ≦ 50000

    • S は長さ N の英大文字列

    入力例1

    28
    MYNAMEISTAROYOURNAMEISHANAKO

    出力例1

    6

    入力例2

    10
    NANANANANA

    出力例2

    8

    問題一覧へ戻る

    ページの先頭へ戻る