Я закодировал алгоритм соответствия строки хорваля Boyer-Moore, используя node.js. Программа работает, но всегда выводит -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