/** classe che calcola la massima comune sottostringa fra due stringhe @author Marcello Dalpasso @version 1 Ottobre-2003 */ public class MaxSottostringa2 { public static void main(String[] args) { if (args.length < 2) { System.out.println("uso: $java Sottostringa stringa1 stringa2"); System.exit(1); } String s1 = args[0]; String s2 = args[1]; String max = ""; int count = 0; for (int i = 0; i < s1.length(); i++) { // i e' l'indice di inizio della sottostringa in s1 for (int j = 0; j < s2.length(); j++) { // j e' l'indice di inizio della sottostringa in s2 int k = 0; // k e' la lunghezza della sottostringa while (i + k < s1.length() && j + k < s2.length()) { count++; if (s1.charAt(i + k) != s2.charAt(j + k)) break; // la sottostringa comune e' finita e ha lunghezza k k++; } if (k > max.length()) max = s1.substring(i, i + k); } } System.out.println("La piu' lunga sottostringa comune e': " + max); System.out.println("Iterazioni necessarie a trovarla: " + count); } }