Поиск в обратном направлении с Бойером-Муром-ХорспуломC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Поиск в обратном направлении с Бойером-Муром-Хорспулом

Сообщение Anonymous »

Я реализовал алгоритм поиска Бойера-Мура-Хорспула, и он отлично работает, когда я хочу выполнить поиск вперед по тексту. Я пытаюсь адаптировать его для работы в обратном направлении и, похоже, не могу сделать это правильно.

Есть ли пример поиска в обратном направлении с использованием BMH?

В качестве справки, вот мой код:

POSITION_T cDocument::FindNext(std::string needle, POSITION_T start)
{
size_t buffersize = mBuffer.GetByteSize() ;
size_t needlesize = needle.length() ;
vector badchars(256, -1) ;

BadCharHueristic(needle, badchars) ;

size_t s = mBuffer.ConvertPositionToByte(start) ;
while(s = 0 && needle[j] == mBuffer.GetByte(s + j))
{
j-- ;
}

if(j < 0)
{
// s holds our position in bytes
return mBuffer.ConvertByteToPosition(s) ;
}
else
{
ssize_t b = j - badchars[mBuffer.GetByte(s + j)] ;
s += Max(1, b) ;
}
}

return GetTextSize() ;
}


Подробнее здесь: https://stackoverflow.com/questions/502 ... e-horspool
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»