Um palíndromo é uma palavra que pode ser lida tanto da esquerda para a direita como da direta para a esquerda. Por exemplo:
"A man, a plan, a canal, Panama!"
"Anotaram a data da maratona."
Vamos agora dar uma definição indutiva para o problema:
Idéia indutiva
- Caso Base: uma palavra com 1 caractere é um palíndromo.
- Hipótese de indução: vamos supor que a palavra sem o primeiro e o último caractere é um palíndromo.
- Caso Geral: Se o primeiro e o último caractere forem iguais e a hipótese de indução for verdadeira, então a palavra é um palíndromo.
- Implementação em Haskell
palindromo :: String -> Bool
palindromo [] = True
palindromo [a] = True
palindromo (x:xs) = (x == last xs) && (palindromo elem)
where
newlen = (length xs) – 1
elem = take newlen xs
- Implementação em C++ (versão iterativa)
bool palindromo(int n, char s[]){
int i = 0, j = n - 1;
while(i < j){
if(s[i] != s[j])
return false;
i++;
j--;
}
return true;
}
Nenhum comentário:
Postar um comentário