Einführung
Ein Anagramm ist ein Wort oder eine Phrase, die durch Umordnung der Buchstaben eines anderen Wortes oder einer anderen Phrase gebildet wird. Beispielsweise ist "listen" ein Anagramm von "silent". In dieser Herausforderung werden Sie aufgefordert, eine Funktion zu schreiben, die überprüft, ob zwei Zeichenketten Anagramme voneinander sind.
String-Anagramm
Schreiben Sie eine Funktion is_anagram(s1, s2), die zwei Zeichenketten als Argumente nimmt und True zurückgibt, wenn sie Anagramme voneinander sind, und False sonst. Die Funktion sollte Groß- und Kleinschreibung ignorieren und Leerzeichen, Satzzeichen und Sonderzeichen ignorieren.
Um dieses Problem zu lösen, können Sie die folgenden Schritte ausführen:
- Verwenden Sie
str.isalnum(), um nicht-alphanumerische Zeichen zu filtern, undstr.lower(), um jedes Zeichen in Kleinbuchstaben umzuwandeln. - Verwenden Sie
collections.Counter, um die resultierenden Zeichen für jede Zeichenkette zu zählen und die Ergebnisse zu vergleichen.
from collections import Counter
def is_anagram(s1, s2):
return Counter(
c.lower() for c in s1 if c.isalnum()
) == Counter(
c.lower() for c in s2 if c.isalnum()
)
is_anagram('#anagram', 'Nag a ram!') ## True
Zusammenfassung
In dieser Herausforderung haben Sie gelernt, wie Sie überprüfen können, ob zwei Zeichenketten Anagramme voneinander sind. Sie haben str.isalnum() verwendet, um nicht-alphanumerische Zeichen zu filtern, str.lower() verwendet, um jedes Zeichen in Kleinbuchstaben umzuwandeln, und collections.Counter verwendet, um die resultierenden Zeichen für jede Zeichenkette zu zählen und die Ergebnisse zu vergleichen.