Python Strings?

2 Antworten

Du sollst im Endeffekt schauen, wie oft z.B. ein Wort in einem Text vorkommt, oder eben auf Zeichenketten bezogen, wie oft kommt eine Zeichenkette in einer andere vor.

Für die Aufgabe hat man einfach needle (zu suchende Zeichenkette) und haystack (zu durchsuchende Zeichenkette) übersetzt.

Wie dem auch sei, gemäß Aufgabe dürfen die Substrings überlappen. Sonst hättest Du einfach str.count() nehmen können.

Trotzdem könnte str.find() Dir die Arbeit schon deutlich erleichtern. (oder str.index(), je nach Gusto)

Andernfalls ist eine einfache Lösung vorne beginnend den zu suchenden Substring (needle) über den Quellstring (Haystack) zu legen und zu vergleichen, um dann den Substring zeichenweise vorwärts zu schieben bis zur Position haystack.len()-needle.len().

Vorab stellst Du noch sicher, das needle.len()<haystack.len(), andernfalls kannst Du gleich mit Fehler abbrechen.

Hoffe damit kommst Du ein ganzes Stück weiter.

Die Aufgabe verlangt von dir, dass du nach der Nadel im Heuhaufen suchst (bzw. nach der Anzahl ihrer Vorkommen), wobei die Nadel eine Zeichenkette ist und Heuhaufen ebenso.

So solltest du bei folgenen Anwendungsfällen folgende Ergebnisse bekommen:

(Nadel): Wolke
(Heuhaufen): Baum
Wolke ist nicht in Baum enthalten

(Nadel): und
(Heuhaufen): Hund
und ist einmal in Hund enthalten

(Nadel): am
(Heuhaufen): Tamtam
am ist zweimal in Tamtam enthalten

Sinnvoll wäre es nun, durch die Heuhaufen-Zeichenkette zu iterieren und je Zeichen zu prüfen, ob es dem ersten Zeichen der Nadel-Zeichenkette entspricht. Wenn dem so sein sollte, kannst du damit beginnen, bei den Folgezeichen ebenso zu prüfen, ob sie den Folgezeichen der Nadel-Zeichenkette entsprechen.

Du könntest eine Hilfsvariable einsetzen, die sich merkt, ob die vorherigen Zeichen schon Teil der Nadel waren. So lange es mit jeder Folgeiteration eine Übereinstimmung gibt, bleibt die Variable auf den Zustand true. Wenn dem nicht mehr so ist, wird sie false. Wenn das Ende der Nadel-Zeichenkette erreicht wurde und es nur Übereinstimmungen gab, wird ein Zähler erhöht.

Das soweit nur als Anregung. Zeiche / Schreibe dir einen Anwendungsfall auf, wenn du das Geschehen visuell besser untersuchen kannst. Ansonsten: Programmablaufplan / Aktivität / Struktogramm / o.ä. anlegen.


KaterKatze3646 
Fragesteller
 19.12.2020, 21:55

Vielen Dank für diese ausführliche Antwort 🙏 Hab die Aufgabe jetzt endlich verstanden...

Werde ich mich morgen direkt dransetzen :))

0