2
我使用node.js编码了Boyer-Moore horspool字符串匹配算法。该程序可以工作,但总是输出-1,如果模式字符串不在指定的文本中,则输出-1。Javascript - 字符串匹配错误输出
我无法弄清楚什么是不工作的我的生活,我会最欣赏我需要修复的提示。
我的代码
var horsPool = function(sText,sPattern)
{
var m = sPattern.length;
var n = sText.length;
var i = m - 1;
while(i<=n-1)
{
var k = 0;
while ((k <= m) && (sPattern[m - 1 - k]) == sText[i - k])
{
k++;
}
if(k==m)
{
return (i - m + 1);
}
else
{
i += t[sText[i]];
}
}
return -1;
}
var shiftTable = function (sPat)
{
var i;
var j;
var m;
m = sPat.length;
for(i=0; i < MAX; i++)
{
t[i] = m;
}
for (j = 0; j<m-2; j++)
{
t[sPat[j]] = m-1 -j;
}
}
var program = function()
{
var text = 'lklkababcabab';
var pattern = 'ka';
shiftTable(pattern);
var pos = horsPool(text,pattern);
if(pos >= 0)
console.log('Pattern found in %d',pos);
else
console.log('Pattern not found');
}
var MAX = new Array(256);
var t = [MAX];
program();
任何帮助将不胜感激。谢谢!
感谢您的帮助@deamentiaemundi!有用 ! – Dazzler