/** * Questo programma prende in input una stringa s, e determina se è palindroma * oppure no. Una stringa si dice palindroma se può essere letta indifferentemente * da sinistra verso destra o da destra verso sinistra. Esempio di stringhe palindrome * sono: anna, ala, otto. */ import java.util.Scanner; public class P6Palindromo { public static void main(String[] args) { System.out.print("Immetti stringa: "); Scanner tastiera = new Scanner(System.in); String s = tastiera.nextLine(); // La variabile palindromo vale inizialmente true. Il ciclo che segue // controlla la prima posizione della string con l'ultima, la seconda con // la penultima e così via. Non appena trova una coppia di caratteri diversi, // segnala la cosa cambiando palindom in false. Così, alla fine del ciclo, // si può controllare il valore di della variabile palindromo per sapere se // la stringa è o non è palindroma. boolean palindromo = true; // Nei programmi che manipolano sringhe è comune far variare gli indici da // 0 fino alla lunghezza della stringa meno 1, invece che da 1 fino alla lunghezza // della stringa. In questo modo i valori del contatore corrispondono direttamente // alle posizioni delle stringa. for (int i = 0; i <= s.length() - 1; i++) { int posizione = i; int posizioneOpposta = s.length() - i - 1; if (s.charAt(posizione) != s.charAt(posizioneOpposta)) { palindromo = false; // L'istruzione che segue non è veramente necessaria, ma aumenta l'efficienza // del programma. In presenza del break, non appena si trova una coppia di caratteri // diversi, usciamo immediatamente dal ciclo for perché è inutile controllare // ulteriori coppie di caratteri: sappiamo già che la stringa non è palindroma. // In assenza di break, il programma continua a controllare tutte le coppie di // caratteri rimanenti, facendo un lavoro inutile. break; } } if (palindromo) System.out.println("PALINDROMA"); else System.out.println("NON PALINDROMA"); tastiera.close(); } }