Sou iniciante e estou fazendo o seguinte programinha, um exercício que valida se uma palavra é um palíndromo ou não:
import java.util.Scanner;
public class Ex1 {
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
System.out.println("Digite uma palavra ou frase:");
String palavra = sc.nextLine();
String palindromo = "";
for(int i = palavra.length() -1; i >= 0; i--){
palindromo += palavra.charAt(i);
}
if(palindromo.equals(palavra)) {
System.out.print("É um palíndromo!" + "\n" + palindromo);
}
else {
System.out.print("Não é um palíndromo!" + "\n" + palindromo);
}
sc.close();
}
}
Estou com o seguinte problema: Para apenas 1 palavra, o programa entrega o resultado perfeitamente.
Para frases, o programa não consegue entregar o resultado correto, mesmo sendo um palíndromo, como a seguinte frase:
socorram me subi no onibus em marrocos
Gostaria de sugestões para a solução do problema!
Muito obrigado, desde já!
Happy code for ya!
Realmente do jeito que você faz com frase fica complicado saber se é Palíndromo, porque a sequencia de letras é o que vale não a forma de que resulta. Um técnica para resolver isso seria:
String palavra = "Roma me tem amor".replace(" ","").toLowerCase();
String palindromo = "";
for(int i = palavra.length() -1; i >= 0; i--)
{
palindromo += palavra.charAt(i);
}
System.out.println(palindromo);
System.out.println(palavra);
System.out.println(palindromo.equals(palavra));
Ou seja, tirando os espaços e colocar tudo em minúsculos para ter um resultado assim:
Eu já tinha visto esta solução, porém como você mesmo falou, deixa um pouco preguiçoso na parte da lógica. Eu havia visto alguns exemplos com stringBuilder e stringBuffer, mas eu queria fazer algo mais “manual” mesmo.