Ich habe Boyer-Moore Horspool String Matching-Algorithmus mit node.js codiert. Das Programm funktioniert, gibt aber immer -1 aus, was es ausgeben soll, wenn die Musterzeichenfolge nicht im angegebenen Text ist.Javascript - Zeichenfolge, die falsche Ausgabe
Ich bin nicht in der Lage, herauszufinden, für das Leben von mir, was nicht funktioniert, und ich wäre sehr dankbar für einen Hinweis auf das, was ich beheben muss.
Mein Code
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();
Jede Hilfe wäre sehr dankbar. Danke!
Sie für die Hilfe @deamentiaemundi Dank! Es klappt ! – Dazzler