// m es el largo del patron
// los indices comienzan desde 1
int k=m;
int j=m;
while(k<=n && j>=1) {
if (texto[k-(m-j)] == patron[j]) {
j--;
} else {
k= k + (m – siguiente(a[k]));
j=m;
}
}
if (j==0){
imprimir(“Patrón encontrado”)
} else {
imprimir(“Patrón no encontrado”)
}El algoritmo esta basado en dos ideas fundamentales:
// m es el largo del patron
// los indices comienzan desde 1
int k=m;
int j=m;
while(k<=n && j>=1)
{
if (texto[k-(m-j)]==patron[j])
{
j--;
}
else
{
k=k+(m-siguiente(a[k]));
j=m;
}
}
// j==0 => ¡Encontrado!, j>=0 => No encontrado.