Ich werde das Problem aus ACM 2003 zitieren:
Betrachten Sie eine Zeichenfolge mit der Länge n (1 <= n <= 100000). Bestimmen Sie die minimale lexikografische Rotation. Zum Beispiel sind die Rotationen der Zeichenfolge "Alabala":
Alabala
labalaa
abalaal
balaala
alaalab
Laalaba
aalabal
und der kleinste unter ihnen ist "aalabal".
Was die Lösung betrifft - ich weiß, dass ich ein Suffix-Array erstellen muss - und sagen wir, ich kann das in O (n) tun. Meine Frage ist immer noch, wie kann ich die kleinste Drehung in O (n) finden? (n = Länge eines Strings)
Ich bin sehr interessiert an diesem Problem und trotzdem bekomme ich irgendwie keine Lösung. Ich interessiere mich mehr für das Konzept und wie man das Problem löst und nicht für die konkrete Umsetzung.
Hinweis: Minimale Rotation bedeutet in der gleichen Reihenfolge wie in einem englischen Wörterbuch - "dwor" steht vor "word", weil d vor w steht.
EDIT: Suffix-Array-Konstruktion benötigt O (N)
LAST EDIT: Ich glaube ich habe eine Lösung gefunden !!! Was ist, wenn ich nur zwei Zeichenfolgen zusammengeführt habe? Wenn der String also "alabala" ist, würde der neue String "alabalaalabala" sein und jetzt würde ich einfach ein Suffix-Array davon erstellen (in O (2n) = O (n)) und das erste Suffix erhalten? Ich denke, das könnte richtig sein. Was denkst du? Vielen Dank!