Como fazer com que um palindromo que recebe apenas umas string seja recursivo?

public static boolean isPalindrome(String s){

	boolean isPalindrome;
	String reversedWord="";
	for(int i=s.length()-1; i>=0; i--)
	{
		reversedWord+=s.charAt(i)+"";
	}
	if(s.equals(reversedWord))
		isPalindrome=true;
	else
		isPalindrome=false;
	return isPalindrome;
}

Deves retirar o primeiro e o último caracter. A palavra é palíndromo se os caracteres forem iguais e a String resultante for também um palíndromo.

 public static boolean isPalindrome(String s){
    if (s.length() <2){
        return true; // String vazia ou com um caracter é palíndromo
    }

    char first = s.charAt(0);  
    char last = s.charAt(s.length()-1);

    return first == last && isPalindrome(s.substring(1, s.length()-1));

   }
1 curtida

Outra sugestão de implementação:

public static void main( String[] args ) {
    String[] ss = { 
        "",
        "a", 
        "aa", 
        "ab",
        "arara",
        "arbra",
        "palíndromo"
    };
    for ( String s : ss ) {
        System.out.printf( 
                "\"%s\" é palíndromo? %s\n", 
                s, 
                isPalindrome( s ) ? "sim" : "não" );
    }
}

public static boolean isPalindrome( String s ) {
    return isPalindrome( s, 0, s.length() - 1 );
}

private static boolean isPalindrome( String s, int i, int f ) {
    if ( i >= f ) { 
        return true;
    } else {
        if ( s.charAt( i ) == s.charAt( f ) ) {
            return isPalindrome( s, i+1, f-1 );
        } else {
            return false;
        }
    }
}

Há duas bases para a recursão:

  1. quando os caracteres das extremidades forem diferentes;
  2. quando acabarem os caracteres que precisam ser verificados, pois há um caractere central (i = f) ou os caracteres acabaram (i > f).

O passo indutivo/recursivo é quando os dois caracteres são iguais, então move-se as posições para mais para dentro da String, invocando novamente método.

1 curtida

Funciona mas não responde ao requisito do método recursivo ter apenas a String como input.

1 curtida

Ola polidromo são as palavras que se pode ler detraz pra frente o imprimir detraz pra frente como ana java avaj

1 curtida

Obrigada ! deu certo