Я решаю некоторую проблему, которая включает алгоритм поиска строки Рабина-Карпа. Этот алгоритм требует, чтобы скользящий хэш был быстрее, чем простой поиск. В этой статье описывается, как реализовать скользящий хэш. Я реализовал «скользящий хэш Рабина-Карпа» без проблем и нашел несколько реализаций реализаций , но в статье также упоминается сложность вычислений, и что предпочтение отдается хешированию n-грамм циклическими полиномами. Он ссылается на BuzHash реализацию такой методики, но мне интересно, как ее можно использовать для построения n-граммового хэша поверх него. Я хочу иметь что-то вроде this или
CPHash cp = new CPHash("efghijk");
cp.shiftRight('l') // now we got hash of "fghijki"
cp.shiftLeft('d') // "defghi"
для Java.
Для людей, которые столкнутся с проблемами, связанными с поиском строк (например, я), есть несколько статей, которые я нашел полезными: 1 , 2 , 3