Ich habe noch mehr CodeEval
Herausforderungen und stieß auf einen auf der Registerkarte hard.Suche eine Zeichenfolge für einen bestimmten Schlüssel
Sie erhalten zwei Strings. Ermitteln Sie, ob die zweite Zeichenfolge eine Teilzeichenfolge der ersten ist (verwenden Sie keine Bibliotheksfunktion des Teilstr-Typs). Die zweite Zeichenfolge kann ein Sternchen () enthalten, das als ein regulärer Ausdruck behandelt werden sollte, d. H. Mit null oder mehr Zeichen übereinstimmt. Der Stern kann mit einem \ char versehen werden, in diesem Fall sollte er als reguläres '' Zeichen interpretiert werden. Zusammenfassend: Die Zeichenfolgen können Alphabete, Zahlen, * und \ Zeichen enthalten.
So sind Sie zwei Zeichenfolgen in einer Datei gegeben, die wie folgt aussehen: Hello,ell
Ihre Aufgabe, um herauszufinden, ist, wenn ell
in hello
ist, was ich tue:
Ich habe es nicht ganz perfekt geworden , aber ich habe es bis zu dem Punkt geschafft, wo es passiert und arbeitet mit einem 65% komplett. Wie es durch die Zeichenfolge und den Schlüssel verläuft und überprüft, ob die Zeichen übereinstimmen. Wenn die Zeichen übereinstimmen, hängt das Zeichen an eine Liste an. Danach teilt es die Länge des Strings mit 2 und prüft, ob die Länge der Liste größer oder gleich der Hälfte des Strings ist. Ich dachte mir, dass die Hälfte der String-Länge ausreichen würde, um zu überprüfen, ob sie wirklich passt oder nicht. Beispiel dafür, wie es funktioniert:
h == e -> no
e == e -> yes -> list
l == e -> no
l == e -> no
...
Meine Frage ist, was kann ich tun, besser zu dem Punkt, wo ich die Platzhalter überprüfen kann, die oben gesagt werden?
import sys
def search_string(string, key):
""" Search a string for a specified key.
If the key exists out put "true" if it doesn't output "false"
>>> search_string("test", "est")
true
>>> search_string("testing", "rawr")
false"""
results = []
for c in string:
for ch in key:
if c == ch:
results.append(c)
if len(string)/2 < len(results) or len(string)/2 == len(results):
return "true"
else:
return "false"
if __name__ == '__main__':
with open(sys.argv[1]) as data:
for line in data.readlines():
data_list = line.rstrip().split(",")
search_key = data_list[1]
word = data_list[0]
print(search_string(word, search_key))
Kann ich die '.split()' Funktion verwenden? –
's = 'string' print 'st'in s ' –
@johnsmith Wenn Sie die Beschreibung lesen würden, würde das nicht funktionieren. – papasmurf