por exemplo, "ccddcc" na string "abaccddccefe"
Pensei em uma solução, mas ela funciona em tempo O (n ^ 2)
Algo 1:
Passos: é um método de força bruta
- Tenha 2 loops
for para i = 1 a i menor que array.length -1
para j = i + 1 a j menor que array.length - Desta forma, você pode obter substring de todas as combinações possíveis do array
- Possui uma função de palíndromo que verifica se uma string é palíndromo
- então para cada substring (i, j) chame esta função, se for um palíndromo armazene-a em uma variável de string
- Se você encontrar a próxima substring de palíndromo e se ela for maior que a atual, substitua-a pela atual.
- Finalmente sua variável de string terá a resposta
Problemas: 1. Este algo é executado em tempo O (n ^ 2).
Algo 2:
- Inverta a string e armazene-a em uma matriz diferente
- Agora encontre a maior substring correspondente entre ambas as matrizes
- Mas isso também é executado no tempo O (n ^ 2)
Vocês podem pensar em um algo que funciona em um momento melhor. Se possível, tempo O (n)
O(n^2)
pegar os substrings *O(n)
para verificar se são palíndromos, para um total deO(n^3)
?