Sorun şaşırtıcı derecede önemsiz değil. İlk olarak, iki kaba kuvvet algoritması. Bir kare ("tekrarlanan desen") uzunluğu ve konumu ile verilir ve doğrulanması zamanını alır . Tüm ve , bir algoritması elde ederiz . İlk önce üzerinde döngü ve sonra dizeyi mesafesinde iki çalışan işaretçi ile tarayarak bunu geliştirebiliriz . Bu şekilde, uzunluğundaki bir karenin doğrusal zamanda var olup olmadığı doğrulanabilir ve toplam çalışma süresi verilir .ℓpO(ℓ)ℓpO(n3)ℓℓ2ℓO(n2)
Kolpakov ve Kucherov tüm bulmak için bir algoritma geliştirilmiş maksimal tekrarlarını zaman içinde bir kelime [1], ve bunların algoritma zaman tüm maksimal kareler bulmak için kullanılabilir . Bir tekrar formunun bir alt-kelime olduğu , burada ve uygun bir öneki . Bu tekrarda yer alan en büyük kare . Bir kelimedeki (sadece çok olan) tüm maksimum tekrarlar verildiğinde bu formülü kullanarak, en büyük kareyi bulabilirsiniz.O(n)O(n)wkxk≥2xw(w⌊k/2⌋)2O(n)
[1] Kolpakov, R. ve Kucherov, G. (1999). Doğrusal zamanda bir kelimedeki maksimum tekrarları bulma . In Bilgisayar Bilimi, 1999 40 Yıllık Sempozyumu Vakıflar (s. 596-604). IEEE.
142857
en uzun değildir, çünkü142857142857
daha uzundur. "Tekrarlanan kalıp" ile ne demek istediğinizi açıklığa kavuşturmak için soruyu düzenlemeniz gerektiğini düşünüyorum.