G
Guest
Gast
Ich würde gerne eine Liste aller Zahlen bis 1000000,die Palindrome sind, erzeugen.(Also Zahlen die von vorne oder hinten gelesen den gleichen Wert darstellen).
Mein naiver Ansatz:
Das schlechte an dieser Methode ist das Umwandeln in einen String, das enorm Performance kostet. Bei kleinen Zahlen kein Problem aber ab einer bestimmten Menge und Größe der Zahlen dauert das.
Kann man einer Zahl nicht irgendwie anders "ansehen" ob sie ein Palindrom ist? Oder lässt sich das berechnen ob eine Zahl ein Palindrom ist?
Freue mich auf euere Anregungen!
Mein naiver Ansatz:
Code:
public void createList(){
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<1000000;i++){
if(isPalindrome(i)){
list.add(i);
}
}
}
public boolean isPalindrome(int num) {
String digits = String.valueOf(num);
int numDigits = digits.length();
for (int i=0; i<numDigits/2; i++) {
if (digits.charAt(i) != digits.charAt(numDigits - i - 1))
return false;
}
return true;
}
Das schlechte an dieser Methode ist das Umwandeln in einen String, das enorm Performance kostet. Bei kleinen Zahlen kein Problem aber ab einer bestimmten Menge und Größe der Zahlen dauert das.
Kann man einer Zahl nicht irgendwie anders "ansehen" ob sie ein Palindrom ist? Oder lässt sich das berechnen ob eine Zahl ein Palindrom ist?
Freue mich auf euere Anregungen!