На основе: { ссылка }
Я реализовал следующее:
for (...)
{
unsigned long long RollingHash = 0;
int k = LineSize - 1;
for (size_t j = 0; j < LineSize; ++j)
{
if (condition)
{
RollingHash += (Line[j] * pow(257, k)) % MOD;
RollingHash %= MOD;
k -= 1;
}
}
}
Однако у меня есть 2 проблемы:
- Кажется, это не очень эффективно / быстро
Добавление / удаление значений для начала или окончания по ссылке, похоже, не работает
unsigned long long h = (Line[0] * pow(257, Line.size()))%MOD;
old = ((old * 257) + 'h' - h) % MOD;
Есть идеи?