Advertisement
NelloRizzo

Reverse di Stringhe e Stringhe Palindrome

Nov 28th, 2018
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.08 KB | None | 0 0
  1. package corso.java;
  2.  
  3. public class Program {
  4.  
  5.     static void reverse(String s) {
  6.         // Stampare s al contrario
  7.         // prendo tutti i caratteri di s dall'ultimo al primo
  8.         // l'ultimo carattere qual è? l'ultimo è quello di posizione s.length() -1
  9.         // il primo ? quello di posizione 0
  10.         for (int i = s.length() - 1; i >= 0; --i) // scorro tutti i caratteri dall'ultimo al primo
  11.             System.out.print(s.charAt(i)); // stampo il carattere corrente
  12.         System.out.println();
  13.     }
  14.  
  15.     static void checkIfPalindrome(String s) {
  16.         // controlla se s sia palindroma!
  17.         // una stringa è palindroma quando non cambia se scritta al contrario
  18.         // studio di un algoritmo:
  19.         // posso controllare i caratteri a partire dai due estremi fino al centro
  20.         // se sono tutti uguali, allora la stringa è palindroma
  21.         int len = s.length();
  22.         int midlen = len / 2;
  23.         int i = 0;
  24.         while(i <= midlen && s.charAt(i) == s.charAt(len-i-1)) ++i;
  25.         if (s.charAt(i) == s.charAt(len-i-1))
  26.             System.out.println("|" + s + "| è palindroma");
  27.         else
  28.             System.out.println("|" + s + "| non è palindroma");
  29.     }
  30.  
  31.     static void checkIfPalindromeIgnoreSpaces(String s) {
  32.         // controlla se s sia palindroma ignorando gli spazi!
  33.         // una stringa è palindroma quando non cambia se scritta al contrario
  34.         // studio di un algoritmo:
  35.         // posso controllare i caratteri a partire dai due estremi fino al centro
  36.         // se sono tutti uguali, allora la stringa è palindroma
  37.         String t = s.replaceAll(" ", ""); // crea un'altra stringa da s, togliendo tutti gli spazi
  38.         int len = t.length();
  39.         int midlen = len / 2;
  40.         int i = 0;
  41.         while(i <= midlen && t.charAt(i) == t.charAt(len-i-1)) ++i;
  42.         if (t.charAt(i) == t.charAt(len-i-1))
  43.             System.out.println("|" + s + "| è palindroma");
  44.         else
  45.             System.out.println("|" + s + "| non è palindroma");
  46.     }
  47.  
  48.     public static void main(String[] args) {
  49.         reverse("Pippo");
  50.         reverse("Pluto");
  51.         reverse("Paperino");
  52.         checkIfPalindrome("paperino");
  53.         checkIfPalindrome("anna e otto e anna");
  54.         checkIfPalindrome("i nipoti e i topini");
  55.         checkIfPalindromeIgnoreSpaces("i nipoti e i topini");
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement