Ciao è benvenuto in questo nuovo articolo dove vedremo come implementare un programma Java che riceve in input una parola, frase o sequenza di numeri e ci restituisce in output se quest’ultima è palindroma o meno.

Cosa significa Palindroma?

Giusto! Prima di vedere come implementare questo programma andiamo a spiegare cosa significa che una parola/frase/sequenza di numeri è PALINDROMA.

Una parola/frase/sequenza di numeri è palindroma se, eliminando tutti gli spazi, può essere letta da sinistra verso destra e da destra verso sinistra indifferentemente.

Per esempio alcune parole palindrome sono “ANNA”, “OTTO”, “ONORARONO”, “INGEGNI”, “AVALLAVA”, “RADAR”, “OSSESSO” ecc.

Se proviamo a leggere ognuna di queste parole al contrario, cioè dall’ultima lettera verso la prima vedrai che la parola rimarrà invariata:

Un esempio di Data palindroma è 02 02 2020:

Un esempio di numero palindromo è:

Anche la frase “eran i mesi di seminare” è palindroma perché se si eliminano tutti gli spazi e la si legge dalla fine (ultima lettera) all’inizio (prima lettera) la frase rimarrà uguale.

Quindi l’algoritmo da seguire per controllare se una frase, numero o parola è palindroma è quello di inizialmente eliminare tutti gli spazi o caratteri speciali e poi controllare che ogni carattere/numero partendo sia dall’inizio che dalla fine siano contemporaneamente identici.

Per esempio se prendo la parola ANNA, la prima lettera sarà uguale all’ultima e la seconda lettera uguale alla penultima lettera:

Vediamo come implementarlo in Java.

import java.util.Scanner;

public class Palindroma {

	/* Il metodo Main chiederà all'utente di inserire la
	 * parola/frase o sequenza di numeri da controllare dopo di che
	 * chiamerà il metodo statico isPalindroma che restituirà 
	 * il valore true se l'input inserito dall'utente è palindromo, 
	 * false altrimenti */
	public static void main(String[] args) {
		Scanner in= new Scanner(System.in);
		System.out.println("Inserire parola/frase/numeri da controllare se sia Palindroma:");
		String word = in.nextLine();
		boolean isPalindroma = isPalindroma(word);
		if(isPalindroma){
			System.out.println("La parola/frase/numeri '"+word+"' è Palindrima");			
		}else{
			System.out.println("La parola/frase/numeri '"+word+"' NON è Palindrima");		
		}
	}
	
	/*
	   Metodo statico 

	     public static boolean isPalindroma(String word)

	   che data una variabile di tipo string chiamata 'word' restituisca 
	   un valore booleano vero se e solo se 'word' e' palindroma 
	   falso altrimenti. Una stringa e' palindroma se
	   può essere letta da sinistra verso destra e da destra verso
	   sinistra indifferentemente (es. "anna", "ailatiditalia", ecc.).
	*/
	public static boolean isPalindroma(String word) {
		if(word == null) 
			return false;
		
		/*Trasformo le lettere della parola/frase tutte in 
		  minuscolo ed elimino tutti gli spazi*/
		word = word.toLowerCase().replaceAll("\\s", "");
		
		//Se la parole è di un solo carattere allora sarà sicuemente palindroma
		if(word.length() < 2)  
		    return true;
		
		
		boolean palindroma = true;
		int startIndex = 0;
		int endIndex = word.length()-1;
		
		/* Uso due indici uno che parte dalla prima posizione e verrà 
		   incrementato di uno ad ogni iterazione e un'altro indice che parte 
		   dall'ultima posizione della frase e verrà decrementato di uno
		   ad ogni iterazione*/
		for(; startIndex < endIndex; startIndex++, endIndex-- ) {
			/* Ad ogni iterazione controllo i due valori che si 
			   trovano nelle posizioni puntate dai due indici.
			   Se sono diversi il contenuto di 'word' non sarà palindroma */
			if(word.charAt(startIndex) != word.charAt(endIndex)) {
				palindroma = false;
				break;
			}
		}
		
		return palindroma;
	}

} 
 
P.S. Se vuoi accedere al mio corso GRATUITO dove spiego quali sono i segreti per imparare la programmazione anche se parti da zero e non hai nessuna competenza di base CLICCA QUI.
 
P.P.S. Se ti è piaciuto questo articolo lascia un commento qui sotto e clicca MI PIACE e CONDIVIDI sulla mia pagina Facebook per avere futuri aggiornamenti.