/** * classe eseguibile capace di generare le sottostringhe di una stringa data. * La stringa e' passata come argomento nella riga di comando. * L'insieme delle sottostringhe e' visualizzato a standard output, dieci * sottostringhe per riga. * * @author Adriano Luchetta * @version 20-Nov-2004 */ public class RecursiveSubstringGenerator { public static void main(String[] args) { final int STRINGS_PER_RAW = 10; if (args.length < 1) { System.out.println("uso: $java RecursiveSubstringGenerator "); System.exit(1); } String[] sub = substringGenerator(args[0]); for (int i = 0; i < sub.length; i++) { System.out.print(sub[i] + " "); if (((i + 1) % STRINGS_PER_RAW) == 0) System.out.println(); } } private static String[] substringGenerator(String s) { // caso base if (s.length() < 2) return new String[] {s}; // passo ricorsivo String[] r = substringGenerator(s.substring(1)); // insieme unione degli insiemi di sottostringhe String[] union = new String[s.length() + r.length]; for (int i = 0; i < s.length(); i++) // sottoinsieme delle stringhe che union[i] = s.substring(0, i+1); // contengono il primo carattere int k = s.length(); for (int i = 0; i < r.length; i++) // sottoinsieme delle stringhe che union[k + i] = r[i]; // non contengono il primo carattere return union; } }