Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

hi,

ich habe ein Wort (enthält nur unterschiedliche Buchstaben) und einen Text und soll überprüfen ob das Wort in dem Text vorkommt

Die einfachste Methode wäre ja einfach an jeder Stelle des Textes zu überprüfen ob das Wort passt. Das braucht aber O(|t| * |m|) Schritte,

ich soll es aber in O(|t|) Schritten hinbekommen, und habe keine Ahnung wie

kann mir vll jemand weiter helfen?

wäre echt super dankbar

ähm, ok, danke für die schnelle Antwort, aber das ist glaube ich nicht das was ich suche

hatte vergessen zu erwähnen, dass ich diesen einfachen Algorithmus, also einfach an jeder Stelle des Textes zu vergleichen, modifizeren soll, so dass ich nur noch eben O(|t|) Schritte brauche

was mir jetzt als Lösung eingefallen ist, bin mir aber nicht sicher wegen der Laufzeit, ähm, wäre dass man eben, da ja beim Muster alle Buchstaben/Zeichen verschieden sein müssen, wenn man als Wort bspw. abcdef hat

und als Text: abcdghtggajttab

wenn man dann den ersten Buchstaben vergleicht, a = a , passt, den zweiten, b= b , passt den dritten c=c, d=d, und dann fünften: g =/ f, passt nicht

Dass man dann nicht wieder in dem Text beim zweiten Buchstaben weitermacht mit vergleichen, sondern eben beim fünften

(weil ja die Buchstaben im Wort unterschiedlich sein müssen, und so gewährleistet ist, dass keiner der Buchstaben die überinstimmten wieder der erste Buchstabe des Wortes sein können)

^^hoffe das war irgendwie verständlich

weiß nur nicht wie das mit der Laufzeit aussieht

hatte vergessen zu erwähnen, dass ich diesen einfachen Algorithmus, also einfach an jeder Stelle des Textes zu vergleichen, modifizeren soll, so dass ich nur noch eben O(|t|) Schritte brauche

Suchen != Modifzieren, bevor Du modifizieren kannst musst Du erst einmal suchen, das sind zwei unabhängige Sachen. Bitte lies den verlinkten Algorithmus und evtl die ursprüngliche Quelle. Zurzeit ist für eine solche Suche kein schnellerer Algorithmus bekommt, der Algorithmus von Ukkonnen ist state-of-the-art für Textsuchen, sofern keine anderen Randbedingungen zur Suche bekannt sind.

Ich verstehe Lieschen so, das sie den Algorithmus modifizieren soll ...

@Reinhold: Das ist klar, aber sie muss zuerst das Pattern suchen und mit das soll ja in O(n) geschehen (genau das ist ja der Kern des Algorithmus von Ukkonen). Das Einfügen bzw Replacing kann ich auch in linearer Zeit machen, so dass eben Suchen + Ersetzen ebenfalls linear ist.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.