ad es. "ccddcc" nella stringa "abaccddccefe"
Ho pensato a una soluzione ma funziona in tempo O (n ^ 2)
Algo 1:
Passi: è un metodo di forza bruta
- Avere 2 cicli
for per i = 1 a i minore di array.length -1
per j = i + 1 aj minore di array.length - In questo modo puoi ottenere sottostringa di ogni possibile combinazione dall'array
- Avere una funzione palindromo che controlla se una stringa è palindromo
- quindi per ogni sottostringa (i, j) chiamate questa funzione, se è un palindromo memorizzatela in una variabile stringa
- Se trovi la successiva sottostringa palindromo e se è maggiore di quella attuale, sostituiscila con quella attuale.
- Finalmente la tua variabile stringa avrà la risposta
Problemi: 1. Questo algoritmo viene eseguito in tempo O (n ^ 2).
Algo 2:
- Invertire la stringa e memorizzarla in un array diverso
- Ora trova la sottostringa corrispondente più grande tra entrambi gli array
- Ma anche questo viene eseguito in tempo O (n ^ 2)
Ragazzi, riuscite a pensare a un algoritmo che funziona in tempi migliori. Se possibile O (n) tempo
O(n^2)
ottenere le sottostringhe *O(n)
per verificare se sono palindromi, per un totale diO(n^3)
?