Ich habe hier eine Antwort auf die Frage eines anderen Mannes Wie zählt man das Auftreten von Zeichenketten in einer Zeichenkette? Ich habe also mit Algorithmen gespielt aquí und nach dem Benchmarking einiger Funktionen habe ich mich gefragt, warum eine Rückwärtsschleife deutlich langsamer ist als eine Vorwärtsschleife.
HINWEIS: Der unten stehende Code funktioniert nicht so, wie er sollte, es gibt andere, die funktionieren (das ist nicht der Punkt dieser Frage), bewusst sein bevor du ihn kopierst>einfügst
Weiterleiten
function occurrences(string, substring) {
var n = 0;
var c = 0;
var l = substring.length;
for (var i = 0, len = string.length; i < len; i++) {
if (string.charAt(i) == substring.charAt(c)) {
c++;
} else {
c = 0;
}
if (c == l) {
c = 0;
n++;
}
}
return n;
}
Rückwärts
function occurrences(string, substring) {
var n = 0;
var l = substring.length - 1;
var c = l;
for (i = string.length; i > 1; i--) {
if (string.charAt(i) == substring.charAt(c)) {
c--;
} else {
c = l;
}
if (c < 0) {
c = l;
n++;
}
}
return n;
}