mis. "ccddcc" dalam string "abaccddccefe"
Saya memikirkan solusi tetapi itu berjalan dalam waktu O (n ^ 2)
Algo 1:
Langkah-langkah: Ini adalah metode kekerasan
- Memiliki 2 untuk loop
untuk i = 1 hingga i kurang dari array.length -1
untuk j = i + 1 hingga j kurang dari array.length - Dengan cara ini Anda bisa mendapatkan substring dari setiap kemungkinan kombinasi dari larik
- Memiliki fungsi palindrome yang memeriksa apakah suatu string adalah palindrome
- jadi untuk setiap substring (i, j) panggil fungsi ini, jika itu adalah palindrome simpan dalam variabel string
- Jika Anda menemukan substring palindrome berikutnya dan jika lebih besar dari yang sekarang, gantilah dengan yang sekarang.
- Akhirnya variabel string Anda akan memiliki jawabannya
Masalah: 1. Algo ini berjalan dalam waktu O (n ^ 2).
Algo 2:
- Balikkan string dan simpan dalam array yang berbeda
- Sekarang temukan substring terbesar yang cocok di antara kedua larik
- Tapi ini juga berjalan dalam waktu O (n ^ 2)
Bisakah kalian memikirkan algo yang berjalan di waktu yang lebih baik. Jika memungkinkan O (n) waktu
O(n^2)
mendapatkan substring *O(n)
untuk memeriksa apakah mereka palindrom, dengan totalO(n^3)
?