/** * Definire una classe Anagramma che definisce un metodo di classe boolean * anagramma(String s, String t) che, date due stringhe s e t, verifica che la * stringa t sia un anagramma della stringa s. */ public class Anagramma { /** Verifica se t e' un anagramma di s */ public static boolean anagramma(String s, String t) { boolean anagramma; // s e' un anagramma di t int i; // per la scansione di s /* se le stringhe hanno lunghezze diverse non possono essere anagramma * l'una dell'altra */ if (s.length() != t.length()) { anagramma = false; } else { /* se hanno la stessa lunghezza, verifica che ogni carattere di s * appaia lo stesso numero di volte in s e in t */ anagramma = true; for (i = 0; i < s.length(); i++) { if (contaOccorrenze(s, s.charAt(i)) != contaOccorrenze(t, s.charAt(i))) anagramma = false; } } return anagramma; } /* Conta il numero di occorrenze di un carattere c nella stringa s */ private static int contaOccorrenze(String s, char c) { int conteggio; // numero di occorrenze di c in s int i; // per la scansione di s conteggio = 0; for (i = 0; i < s.length(); i++) { if (s.charAt(i) == c) conteggio++; } return conteggio; } private static void testAnagramma(String s, String t, boolean atteso) { System.out.println("anagramma(\"" + s + "\", \"" + t + "\"): " + anagramma(s, t) + " (" + atteso + ")"); } private static void testAnagramma() { testAnagramma("vello", "volle", true); testAnagramma("ceppo", "coppe", true); testAnagramma("pane latte", "la patente", true); testAnagramma("pagamenti", "impegnata", true); testAnagramma("tosse", "sesto", true); testAnagramma("trota", "torta", true); testAnagramma("sposata", "passato", true); testAnagramma("risultati", "altruisti", true); testAnagramma("nascita", "castani", true); testAnagramma("sperato", "superato", false); testAnagramma("cavalli", "cavilli", false); testAnagramma("scoglio", "scaglia", false); testAnagramma("accanto", "acanto", false); testAnagramma("pertica", "sprecati", false); } /* Applicazione di test */ public static void main(String[] args) { testAnagramma(); } }