Wie im Betreff wie überprüft man, wie oft eine Zeichenfolge eine andere enthält? Beispiel:
%Vor%Wenn ich Matcher verwende, erkennt es nur das erste Vorkommen:
%Vor%Ich kann es so machen, aber Ich möchte unten Java-Bibliotheken wie Scanner, StringTokenizer, Matcher usw. verwenden:
%Vor%Eine Auskleidung für die Lulz
longStr
ist die Eingabezeichenfolge. findStr
ist die Zeichenfolge, nach der gesucht werden soll. Keine Annahme, außer dass longStr
und findStr
nicht sein müssen null
und findStr
müssen mindestens 1 Zeichen haben.
Da zwei Übereinstimmungen als unterschiedlich betrachtet werden, solange sie bei verschiedenen Indizes beginnen und Überschneidungen auftreten können, müssen wir eine Möglichkeit finden, zwischen den Übereinstimmungen zu unterscheiden und zu ermöglichen, dass der übereinstimmende Teil überlappt wird.
Der Trick besteht darin, nur das erste Zeichen der Suchzeichenfolge zu verwenden und Look-Ahead zu verwenden, um den Rest der Suchzeichenfolge zu bestätigen. Dadurch können überlappende Teile neu zugeordnet werden, und durch Entfernen des ersten Zeichens der Übereinstimmung können wir die Anzahl der Übereinstimmungen zählen.
Einige schnelle Bruce Forte Lösung:
%Vor% Dies druckt 3. Bitte beachten Ich nehme an, dass keines der String
s null ist.