ローカル期間
空でない文字列sを取得します。ローカル周期のSインデックスでは、iが最小の正の整数n個毎ように0≤K <N 、我々は、S [I + K] = S [I-N + K]両側が定義されるたびに。または、連結wwがsの隣に配置され、wの2番目のコピーがsのインデックスiで始まる場合、2つの文字列は重複する場所で一致するように、空でない文字列wの最小長です。
例として、(0から始まる)インデックス2 でs = "abaabbab"のローカル周期を計算してみましょう。
- n = 1を試してください:s [2 + 0]≠s [2-1 + 0]なので、この選択は正しくありません。
- n = 2を試してください:それからs [2 + 0] = s [2-2 + 0]がs [2 + 1]≠s [2-2 + 1]なので、これも正しくありません。
- n = 3を試してください:s [2 + 0-3]は定義されません、s [2 + 1] = s [2-3 + 1]およびs [2 + 2] = s [2-3 + 2]。したがって、ローカル期間は3です。
次に、2番目の定義を使用したローカル期間の視覚化を示します。わかりやすくするために、wの2つのコピーの間にセミコロンを追加します。
index a b a a b b a b period
0 a;a 1
1 b a;b a 2
2 a a b;a a b 3
3 a;a 1
4 b b a b a a;b b a b a a 6
5 b;b 1
6 a b b;a b b 3
7 b a;b a 2
wは必ずしもsの部分文字列ではないことに注意してください。これは、インデックス4の場合に発生します。
タスク
入力は、小文字のASCII 文字の空でない文字列です。必要に応じて、文字のリストとして使用できます。出力は、各インデックスのsのローカル期間を含むリストになります。上記の例では、正しい出力は[1,2,3,1,6,1,3,2]になります。
各言語の最低バイト数が優先されます。標準のコードゴルフ規則が適用されます。
テストケース
a -> [1]
hi -> [1, 2]
www -> [1, 1, 1]
xcxccxc -> [1, 2, 2, 5, 1, 3, 2]
abcbacb -> [1, 4, 7, 7, 7, 3, 3]
nininini -> [1, 2, 2, 2, 2, 2, 2, 2]
abaabbab -> [1, 2, 3, 1, 6, 1, 3, 2]
woppwoppw -> [1, 4, 4, 1, 4, 4, 4, 1, 4]
qwertyuiop -> [1, 10, 10, 10, 10, 10, 10, 10, 10, 10]
deededeededede -> [1, 3, 1, 5, 2, 2, 5, 1, 12, 2, 2, 2, 2, 2]
abababcabababcababcabababcaba -> [1, 2, 2, 2, 2, 7, 7, 7, 7, 2, 2, 2, 19, 19, 5, 5, 2, 5, 5, 12, 12, 2, 2, 2, 7, 7, 5, 5, 2]
;
例のどこにでも)。それは主要な1を取り除くでしょう
qwertyuiop
qwertyuiop