Erstellen Sie ein 256-Liniendiagramm mit einem Char und einem Bit-umgekehrten Zeichen. eine 4-Byte-Ganzzahl gegeben, Nimm das erste Zeichen, schaue es auf dem Diagramm an und vergleiche die Antwort mit dem letzten Zeichen der Ganzzahl. wenn sie sich unterscheiden, ist es kein Palindrom, wenn sie sich mit den mittleren Zeichen wiederholen. wenn sie sich unterscheiden, ist es kein Palindrom, sonst ist es.
Viele schöne Lösungen hier. Lassen Sie mich eine hinzufügen, die meiner Meinung nach nicht die effizienteste, aber sehr lesenswerte ist:
%Vor%Ich denke, der beste Ansatz besteht darin, an den Enden zu beginnen und sich nach innen zu arbeiten, dh das erste Bit und das letzte Bit, das zweite Bit und das vorletzte Bit usw. zu vergleichen, die O (N / 2 ) wobei N die Größe des int ist. Wenn Ihre Paare zu irgendeinem Zeitpunkt nicht gleich sind, ist es kein Palindrom.
%Vor%Manchmal ist es auch gut, einen Fehler zu melden;
Hier gibt es viele gute Antworten auf die offensichtliche Methode, das Bitmuster in irgendeiner Form zu analysieren. Ich frage mich allerdings, ob es mathematische Lösungen gäbe? Gibt es Eigenschaften paldromischer Zahlen, die wir ausnutzen könnten?
Also habe ich ein bisschen mit Mathe gespielt, aber die Antwort sollte von Anfang an klar gewesen sein. Es ist trivial zu beweisen, dass alle binären palindromischen Zahlen entweder ungerade oder null sein müssen. Das ist so weit, wie ich damit umgehen konnte.
Eine kleine Untersuchung zeigte keinen solchen Ansatz für dezimale Palindrome, also ist es entweder ein sehr schwieriges Problem oder nicht über ein formales System lösbar. Es könnte interessant sein, Letzteres zu beweisen ...
Ich weiß, dass diese Frage vor zwei Jahren gestellt wurde, aber ich habe eine bessere Lösung, die nicht von der Wortgröße und allem abhängt,
%Vor%Tags und Links c c++ integer palindrome binary