我在这里有另一个人问题的答案如何计算字符串中出现的字符串?所以我在这里 玩算法,在对一些函数进行基准测试后,我想知道为什么向后循环比向前循环慢得多。
注意:下面的代码不能正常工作,还有其他代码可以工作(这不是这个问题的重点),在复制>粘贴之前要注意
向前
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;
}
向后
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;
}