Ihre Instinkte waren korrekt. Das Erzeugen neuer Objekte (substring ()) ist nicht sehr schnell und es bedeutet, dass jedes erstellte Objekt auch einen g / c Overhead verursachen muss.
Dies könnte viel schneller sein:
%Vor%Mein Java ist nicht so gut, also gebe ich dir eine Antwort in C #:
%Vor%Beachten Sie, dass im Gegensatz zu Ihren und Bozhos keine neue Zeichenfolge erstellt wird, was der langsamste Teil Ihres Algorithmus wäre.
Hier fehlt der Kontext: Wonach suchst du? Welche Art von Anwendung? Wie oft soll es laufen?
Diese Dinge sind wichtig, weil verschiedene Szenarien verschiedene Lösungen erfordern:
Je nach Problem können auch andere Lösungen relevant sein.
Aber wenn Sie es nur zum Vergleich der ersten drei Zeichen von zwei Strings verwenden, glaube ich, dass die Code-Schnipsel, die hier gegeben werden, so gut sind, wie Sie bekommen werden - sie sind alle O (1) *, also keine drastische Optimierung, die Sie tun können.
* Die einzige Stelle, an der dies nicht gilt, ist, wenn die Länge des Strings O (n) und nicht O (1) ist (was für die Strlen-Funktion in C ++ der Fall ist), was nicht der Fall ist für Java und C # String-Objekte.
Tags und Links java