Ich habe eine Aufgabe zu tun, und ich habe darüber nachgedacht, aber ich komme nicht mit der richtigen Antwort.Vergleichen Sie zwei Arrays und geben Sie den Index der ersten Erscheinung
Schreiben Sie in einer Sprache Ihrer Wahl eine Funktion, die eine Zeichenfolge mit dem Namen str und eine Zeichenfolge mit dem Namen set erhält.
Die Funktion gibt den Index des ersten Auftretens eines beliebigen Zeichens aus set in str zurück.
Zum Beispiel: str = "hallohellohellohelloistom!" set = "t98765!"
Die Funktion gibt 22 (Index von '5' in str) zurück. Stellen Sie sicher, dass die Zeitkomplexität nicht größer ist als die Länge der beiden Zeichenfolgen. O (m + n) Angenommen, die Zeichenfolge enthält nur ASCII-Zeichen.
Ich habe darüber nachgedacht und ich dachte darüber nach, es mit Teile und Herr zu machen. Ich habe einen Basisfall, der immer O (1) ist und das Ich teile das Problem in kleinere Probleme, bis ich die Antwort bekomme. Das Problem ist, dass bei dieser Lösung die Komplexität O (log n) ist.
Der andere Ansatz, den ich dachte, war, ein Set zu machen. Aber ich weiß immer noch nicht wirklich, wie ich dieses Problem angehen soll. Irgendwelche Ideen??
Das war der Schlüssel !! Vielen Dank! – SomeAnonymousPerson
'hash' Tabelle ist mit' -1' gefüllt, weil wir versuchen, die 'indexes' in der Tabelle zu speichern und alle gültigen Indizes sind immer'> = 0'. Wenn wir also prüfen wollen, ob in der Tabelle 'str [i]' vorhanden ist, können wir direkt zur Position springen (eine Position, deren Wert str [i] ist) in der Tabelle und wenn der Wert an dieser Stelle '-1' ist Dann wird angegeben, dass an dieser Stelle kein Index/Zeichen von 'set' gespeichert ist. – sameerkn
Ich habe es, aber dann in der Sekunde, während ich es mit -1 vergleichen wollte, nein mit 0? Wenn ich es mit 0 vergleiche, wird es fortgesetzt, auch wenn die Menge nicht so lang ist. – SomeAnonymousPerson