Based on : https://stackoverflow.com/a/20412573/4058644
I implemented the below:
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;
}
}
}
However, I have 2 issues:
- It does not seem to be much efficient/fast
Adding/Removing values to start or end as per the link does not seem to work
unsigned long long h = (Line[0] * pow(257, Line.size()))%MOD; old = ((old * 257) + 'h' - h) % MOD;
Any ideas?