Python Strings?
Hey, hat wer eine Idee für die Lösung?
Ich habe sowieso Probleme die Aufgabenstellung überhaupt zu verstehen. Das wäre bisher mit meinem Verständnis der Aufgabe mein Ansatz...
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.
Vielen Dank für diese ausführliche Antwort 🙏 Hab die Aufgabe jetzt endlich verstanden...
Werde ich mich morgen direkt dransetzen :))