ör. "abaccddccefe" dizesindeki "ccddcc"
Bir çözüm düşündüm ama O (n ^ 2) zamanında çalışıyor
Algo 1:
Adımlar: Kaba kuvvet yöntemidir
İ = 1 - i
için diziler için 2 var , dizi.length -1 için j = i + 1 - j daha küçük dizi.length- Bu şekilde, diziden olası her kombinasyonun alt dizesini elde edebilirsiniz.
- Bir dizenin palindrom olup olmadığını kontrol eden bir palindrom işlevine sahip olun
- yani her alt dize için (i, j) bu işlevi çağırın, eğer bu bir palindrom ise bir dizge değişkeninde saklayın
- Bir sonraki palindrom alt dizesini bulursanız ve geçerli olandan daha büyükse, onu geçerli alt dizeyle değiştirin.
- Sonunda dize değişkeninizin yanıtı olacaktır
Konular: 1. Bu algo O (n ^ 2) zamanda çalışır.
Algo 2:
- Dizeyi ters çevirin ve farklı dizide saklayın
- Şimdi her iki dizi arasında eşleşen en büyük alt dizeyi bulun
- Ama bu da O (n ^ 2) zamanında çalışır
Daha iyi bir zamanda çalışan bir algo düşünebilir misiniz? Mümkünse O (n) zamanı
O(n^2)
alt dizeleri almak *O(n)
palindrom olup olmadıklarını kontrol etmek için toplamO(n^3)
?