G
Großvater
Gast
Hallo ihr,
ich würde gerne große Zahlen(BigIntegers) prüfen ob die ersten 9 Ziffern (ohne die 0) pandigital sind. Pandigitale Zahlen enthalten alle Ziffern von 1-9 (eigentlich 0-9), aber nicht unbedingt in der richtigen Reihenfolge. Bsp: 123456789, 987654321, 561234789
Angenommen ich habe jetzt eine große Zahl (BigInteger) wie z.B. die hier:
Wie könnte ich möglichst effizient (schnell) prüfen, ob die ersten 9 Ziffern pandigital sind?
Hier meine Lösung (die aber viieeeel zu langsam ist):
Das muss doch besser gehen!
ich würde gerne große Zahlen(BigIntegers) prüfen ob die ersten 9 Ziffern (ohne die 0) pandigital sind. Pandigitale Zahlen enthalten alle Ziffern von 1-9 (eigentlich 0-9), aber nicht unbedingt in der richtigen Reihenfolge. Bsp: 123456789, 987654321, 561234789
Angenommen ich habe jetzt eine große Zahl (BigInteger) wie z.B. die hier:
43466557686937456435642996440906533187938298969649928516003704476137795166849228875
Wie könnte ich möglichst effizient (schnell) prüfen, ob die ersten 9 Ziffern pandigital sind?
Hier meine Lösung (die aber viieeeel zu langsam ist):
Code:
public static boolean ispandigital(BigInteger x){
String s = x.toString();
if(s.length()<18){
return false;
}
else{
ArrayList<String> list = new ArrayList();
for(int i=0;i<9;i++){
String temp = s.substring(i,i+1);
list.add(temp);
}
if(list.contains("1") && list.contains("2") && list.contains("3") && list.contains("4") && list.contains("5") && list.contains("6") && list.contains("7") && list.contains("8") && list.contains("9")){
System.out.println("zahl gefunden: "+s);
return true;
}
else{
return false;
}
}
}
Das muss doch besser gehen!