Wie überprüfe ich die Palindromzahl in Python?

Veröffentlicht: 2020-11-30

Inhaltsverzeichnis

Was ist ein Palindrom?

Ein Palindrom ist ein Wort, eine Zahl oder eine beliebige Zeichenfolge, die rückwärts genauso gelesen wird wie vorwärts.

Einige Beispiele: entmutigt, 1567651, 02.02.2020, Malayalam

Dieser Artikel zeigt Ihnen verschiedene Möglichkeiten, wie Sie mit Python ein Programm schreiben können, um zu überprüfen, ob eine bestimmte Eingabe ein Palindrom ist oder nicht.

Methode 1:

Die naivste Lösung, die mir in den Sinn kommt, besteht darin, die Zahl umzukehren und zu prüfen, ob sie mit der eingegebenen Zahl übereinstimmt. Es kann wie folgt durchgeführt werden:

Zahl = int (Eingabe ());

rückwärts = 0

während Zahl > 0:

Ziffer = Zahl % 10

rückwärts = rückwärts * 10 + Ziffer

Zahl = Zahl // 10

if number==umgekehrt:

print("es ist ein Palindrom!")

anders:

print("es ist kein Palindrom!")

Dies beeinträchtigt jedoch die Lesbarkeit des Codes und hat mehr Codezeilen als erforderlich. Sehen Sie sich unseren Online-Data-Science-Kurs an, um mehr zu erfahren.

Hier ist eine kurze und süße Möglichkeit, eine Zahl mit nur einer Zeile zu überprüfen.

Methode 2:

Der Trick besteht darin, die eingegebene Zahl als str -Datentyp anstelle von int zu verwenden. Dann können Sie die Slicing-Technik [::-1] verwenden, um die Umkehrung einer Zeichenfolge zu erhalten und in der if - Anweisung selbst auf Gleichheit zu prüfen.

Zahl = Eingabe()

if Zahl == Zahl[::-1]:

print("es ist ein Palindrom!")

anders:

print("es ist kein Palindrom!")

Methode 3:

Dies ist eine rekursive Methode, um zu prüfen, ob ein Array ein Palindrom ist oder nicht.

def isPalindrome(Zahlen, Start, Ende):

wenn start >= ende:

gibt Wahr zurück

if numbers[start] == ​​numbers[end]:

return isPalindrome(Zahlen, Start + 1, Ende – 1)

anders:

gibt False zurück

numbers= list(map(int, input().split()))

n=len(Zahlen)

if isPalindrome(Zahlen, 0, n-1):

print("es ist ein Palindrom!")

anders:

print("es ist kein Palindrom!")

Die isPalindrome- Funktion prüft, ob das erste und letzte Array-Element gleich sind oder nicht. Wenn nicht, gibt die Funktion sofort False zurück. Andernfalls sucht es rekursiv nach den nächsten extremen Elementen, bis sich die beiden Zeiger in der Mitte treffen.

Lesen Sie: Ideen und Themen für Python-Projekte

Häufige Fragen in Vorstellungsgesprächen im Zusammenhang mit Palindromen

#1 Längster palindromischer Teilstring

Bei nur einer Zeichenfolge als Eingabe müssen Sie die Länge der längsten palindromischen Teilzeichenfolge in der Zeichenfolge zurückgeben.

Z.B:

Eingabe: 'acbcbabcc'

Ausgabe: 5 ('cbabc')

Sich nähern:

Wenn wir versuchen, dies mit einem der häufigsten Probleme von DP, dem längsten gemeinsamen Teilstring, in Beziehung zu setzen, besteht hier der Unterschied darin, dass wir nur einen Eingabestring erhalten, während LCS zwei Strings verwendet. Da wir wissen, dass ein Palindrom genau gleich seiner Umkehrung ist, können wir die zweite Zeichenfolge als Umkehrung unserer gegebenen Eingabe machen.

Jetzt wird dies genau dasselbe wie das Finden von LCS.

def LCSubstr(A, B, m, n):

LCSub = [[0 für i im Bereich (n+1)] für j im Bereich (m+1)]

ans = 0

für i im Bereich(m+1):

für j im Bereich (n+1):

wenn (i == 0 oder j == 0):

LCSub[i][j] = 0

elif A[i-1] == B[j-1]:

LCSub[i][j] = 1 + LCSub[i-1][j-1]

ans = max(ans, LCSub[i][j])

anders:

LCSub[i][j] = 0

Rückkehr ans

str1 = Eingabe()

str2 = str1[::-1]

m = len(str1)

n = len(str2)

print('Länge des längsten palindromischen Teilstrings = ', LCSubstring(str1, str2, m, n))

Für die obige Eingabe erhalten wir also die beiden Zeichenfolgen als

'acbcbabcc' und

'ccbabcbca'

Die längste gemeinsame Teilzeichenfolge wird zu „cbabc“, die die Länge 5 hat.

#2 Prüfen Sie, ob ein Anagramm einer Zeichenfolge ein Palindrom ist

Bei einer Zeichenfolge als Eingabe müssen Sie prüfen, ob ein Anagramm der Zeichenfolge ein Palindrom sein kann oder nicht, und entsprechend Ja/Nein zurückgeben.

Z.B:

Eingabe: 'pythonpython'

Ausgang: Ja

(Während die Zeichenfolge selbst kein Palindrom ist, bildet ein mögliches Anagramm 'pythonnohtyp' ein Palindrom.)

Eingabe: 'harrypotter'

Ausgang: Nein

Sich nähern:

Wenn Sie genau bemerken, dass immer, wenn wir eine Palindrom-Kette gleicher Länge haben, alle Zeichen in der ersten Hälfte in der zweiten Hälfte wiederholt werden. Das bedeutet, dass alle in der Zeichenfolge vorhandenen Zeichen eine gerade Anzahl von Malen vorkommen.

Wenn die Länge ungerade ist, kommen alle Zeichen links vom mittleren Element (nicht einschließlich) gleich oft auf der rechten Seite des mittleren Elements vor. Das bedeutet, dass nur ein Zeichen ungerade oft vorkommt (mittleres Element) und alle anderen gerade oft vorkommen.

Mit dieser Logik können wir die Anzahl der Zeichen in der Zeichenfolge in einem Hash speichern und auf diese Einschränkungen prüfen, um die erforderliche Antwort zu erhalten.

CHAR_RANGE = 256

str1 = Eingabe()

Freq = [0 für i im Bereich (CHAR_RANGE)]

für i in str1:

freq[ord(i)] += 1 #ord(x) ergibt den Unicode-Wert von x

num_odds = 0

für i im Bereich (CHAR_RANGE):

wenn freq[i] & 1:

num_odds += 1

if (num_odds > 1):

drucken („Ja“)

anders:

drucken ("Nein")

Fazit

Zusammenfassend lässt sich sagen, dass die Palindromprobleme sehr häufig und interessant sind. Sie sind nützlich, um verschiedene mathematische Rätsel und kompetitive Programmierfragen zu lösen.

Wenn Sie neugierig sind, etwas über Data Science zu lernen, schauen Sie sich das Executive PG Program in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte, praktische Workshops, Mentoring mit Branchenexperten, 1 -on-1 mit Branchenmentoren, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.

Wie hoch ist die zeitliche Komplexität des Palindrome-Programms?

Die Anzahl der elementaren Operationen, die von dem Verfahren ausgeführt werden, wird häufig verwendet, um die Zeitkomplexität abzuschätzen, wobei angenommen wird, dass jeder elementare Prozess eine festgelegte Zeitdauer benötigt, um abgeschlossen zu werden. Die zeitliche Komplexität der Bestimmung, ob eine Zahl ein Palindrom ist oder nicht, beträgt O(log10 (n)). Wenn wir prüfen, ob die Werte ein Palindrom sind, teilen wir die Zahl oder den Wert bei jeder Iteration durch zehn. Folglich ist die zeitliche Komplexität gleich der Anzahl der Ziffern einer Zahl.

Wie unterscheidet sich / vom //-Operator in Python?

Wenn wir den Divisionsoperator verwenden, dh einen einzelnen Schrägstrich (/) in Python, dividiert der Compiler einfach die beiden Werte auf der rechten und linken Seite des Schrägstrichs. Aber wenn wir doppelte Schrägstriche (//) verwenden, dh Floor Division, bitten wir den Compiler, den typischen Divisionsprozess auszuführen, aber das Ergebnis, das er liefert, ist die größtmögliche Ganzzahl, die nahe an der Antwort liegt. Diese Ganzzahl ist entweder kleiner oder gleich dem Ergebnis der normalen Division.

Was ist das Einstiegsgehalt eines Python-Entwicklers?

Es ist eine bekannte Tatsache, dass Python in den meisten Branchen und Unternehmen weit verbreitet ist, was Python zur am zweithöchsten bezahlten Computersprache macht. Python ist auch die beliebteste Programmiersprache unter Studenten und Fachleuten, da sie leicht zu erlernen und sehr flexibel ist. Das Einstiegsgehalt eines Python-Entwicklers in Indien liegt im Durchschnitt bei 4.27.293 INR pro Jahr. Fachleute, die Python lernen, haben einen großen Spielraum, da Python auch in anderen Bereichen wie Data Science und Machine Learning verwendet wird.