me ajude a corrigir o erro que minha cabeça travou!!!
nesse codigo ele exclui a primeira letra e verifica se é palindrome se não for ele exclui a ultima e verifica novamente e se tiver numero ele dá entrada invalida.
package palindrome;
public class Palindrome
{
public static void main(String[] args) {
System.out.println(isPalindrome("", 0));
}
public static String isPalindrome(String txt, int entry) {
String[] reverso = new String[] {};
int y = 0;
int i = txt.length() -1;
boolean hasNumber = false;
if(entry == 1)
txt = txt.substring(1, txt.length());
if(entry == 2)
txt = txt.substring(0, txt.length() -1);
if(entry >= 3)
return "Sem Resultados";
while(i > -1) {
reverso.push(String.valueOf(txt.charAt(i)?));
hasNumber = Integer.parseInt(txt.charAt(i)) ? true : false;
if(hasNumber)
break;
i--;
y++;
}
if(hasNumber)
return "Entrada Inválida";
String res = txt == reverso.join("") ? reverso.join("") : "Sem Resultados";
if(res == "Sem Resultados")
return isPalindrome(txt, entry + 1)
else
return res;
}
}
Palíndromos são frases ou palavras que podem ser lidas, indiferentemente, da esquerda para a direita, conforme o sentido habitual da leitura, ou da direita para a esquerda, sem que haja mudança da sua significação. São também chamados de anacíclicos. Ref - https://www.normaculta.com.br/palindromo-exemplos-de-palavras-e-frases/
Código:
Você precisa primeiro limpar a string para ter um padrão sem acentuação:
public static String inverterString(String str) {
StringBuilder sb = new StringBuilder(str);
return sb.reverse().toString();
}
e testando:
String c = removerAcentos("alã");
String v = inverterString(c);
if (c.equals(v)) {
System.out.println("é um palidromo");
} else {
System.out.println("não é um palidromo");
}
São palavras mas a lógica que estou tentanto é diferente, ele testa um substring primeiro tira o primeiro char e testa nao sendo palindrome ele tira o ultimo e testa de novo e as saidas eu coloco o resultado, se tiver int dá inválido.
Tem que fazer uma outra função para buscar no caso que eu entendi as letras semelhantes: busqueSubSequencia
public static String busqueSubSequencia(String str){
char p1 = '0';
char p2 = '0';
do {
p1 = str.charAt(0);
p2 = str.charAt(str.length() - 1);
if (p1 != p2){
str = str.substring(1, str.length() - 1);
}
} while (p1 != p2);
return str;
}
public static String inverterString(String str) {
StringBuilder sb = new StringBuilder(str);
return sb.reverse().toString();
}
public static String removerAcentos(String str) {
return Normalizer.normalize(str, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "");
}
E no código
String c = removerAcentos("BANANAS");
c = busqueSubSequencia(c);
String v = inverterString(c);
System.out.println(v);
if (c.equals(v) && c.length() > 1) {
System.out.print("é um palidromo: ");
System.out.println(c);
} else {
System.out.println("não é um palidromo");
}
o que ele pede é o seguinte tirar a primeira letra e verificar se é palindrome se não for exclui a ultima e verifica de novo, imprime somente a palavra que é um palindrome.
No código que eu te postei é referente ao que foi exemplo na pergunta e você precisa verificar e aprender com o código. Nada diz na pergunta o que acabou agora dizendo