A parte il titolo che fa pensare a qualcosa di completamente diverso (mi dava l'idea che avevi un array di roba e volevi tipo mettere tutto insieme in una stringa).
Soluzione stupida (da bambino delle elementari, la prima roba che mi e' venuta in mente) e per niente generica, ovvero funziona solo con i numeri di 4 cifre e cicla tutti i numeri da 0 a 9999, ma ci mette solo 108 ms nel mio iMac. Sta a te trovare un modo piu' efficiente ed eventualmente generico.
codice:
import java.util.*;
public class Duplicates
{
public static boolean hasDuplicates (int n)
{
int n1000 = n / 1000;
int n100 = (n - n1000 * 1000) / 100;
int n10 = (n - n1000 * 1000 - n100 * 100) / 10;
int n1 = (n - n1000 * 1000 - n100 * 100 - n10 * 10);
if (n1000 == n100 || n1000 == n10 || n1000 == n1 || n100 == n10 || n100 == n1 || n10 == n1) {
return true;
}
else {
return false;
}
}
public static void main (String[] args)
{
long start = System.currentTimeMillis();
List<Integer> l = new ArrayList<Integer>();
for (int i = 0; i <= 9999; i++) {
if (!hasDuplicates (i)) {
System.out.println (i);
l.add (i);
}
}
long stop = System.currentTimeMillis();
System.out.println ("Total time = " + (stop - start));
}
}