ist Bearbeiten: Posting meine endgültige Lösung, weil dies ein sehr hilfreicher Thread war, und ich möchte etwas Finalität hinzufügen. Mit dem Ratschlag aus beiden Antworten konnte ich eine Lösung erarbeiten. Ich habe eine Hilfsfunktion hinzugefügt, in der ich ein Anagramm definiert habe. Hier ist meine endgültige Lösung:Python 2.7 Finden, ob ein Anagramm einer Zeichenkette eine Teilzeichenkette einer anderen
def anagram(s1, s2):
s1 = list(s1)
s2 = list(s2)
s1.sort()
s2.sort()
return s1 == s2
def Question1(t, s):
t_len = len(t)
s_len = len(s)
t_sort = sorted(t)
for start in range(s_len - t_len + 1):
if anagram(s[start: start+t_len], t):
return True
return False
print Question1("app", "paple")
ich auf einige der Praxis technische Fragen Interview arbeite, und ich bin fest auf folgende Frage:
Find whether an anagram of string t is a substring of s
ich gearbeitet habe, aus den folgenden zwei Varianten meines Codes, und eine Lösung dafür glaube ich liegt in einer Kreuzung zwischen den beiden. Das Problem, das ich habe, ist, dass der erste Code immer False.
druckt, unabhängig von der Eingabe. Die zweite Variante funktioniert bis zu einem gewissen Grad. Es kann jedoch nicht einzelne Buchstaben sortieren. Zum Beispiel t=jks s=jksd
True!
jedoch t=kjs s=jksd
druckt False.
def Question1():
# Define strings as raw user input.
t = raw_input("Enter phrase t:")
s = raw_input("Enter phrase s:")
# Use the sorted function to find if t in s
if sorted(t.lower()) in sorted(s.lower()):
print("True!")
else:
print("False.")
Question1()
Arbeits Variante gedruckt wird:
def Question1():
# Define strings as raw user input.
t = raw_input("Enter phrase t:")
s = raw_input("Enter phrase s:")
# use a loop to find if t is in s.
if t.lower() in s.lower():
print("True!")
else:
print("False.")
Question1()
Ich glaube, es gibt eine Lösung, die zwischen diesen beiden liegt, aber ich habe Probleme, herauszufinden, wie man Verwenden Sie in dieser Situation sorted
.
Sie müssen alle Kombinationen von Zeichen in t und überprüfen Sie sie gegen s. es ist nicht richtig, s zu sortieren. – Shiping