long[] rollingHash(String text, long base, long mod) {
long[] hash = new long[text.length() + 1];
for (int i = 0; i < text.length(); i++) {
hash[i + 1] = (hash[i] * base + text.charAt(i)) % mod;
}
return hash;
}
def rolling_hash(text: str, base: int, mod: int) -> list[int]:
hash_values = [0]
for ch in text:
hash_values.append((hash_values[-1] * base + ord(ch)) % mod)
return hash_values
def rollingHash(text: String, base: Long, mod: Long): Array[Long] =
val hash = Array.fill(text.length + 1)(0L)
for i <- text.indices do
hash(i + 1) = (hash(i) * base + text(i).toLong) % mod
hash
std::vector<long long> rollingHash(const std::string& text, long long base, long long mod) {
std::vector<long long> hash(text.size() + 1);
for (int i = 0; i < text.size(); i++) {
hash[i + 1] = (hash[i] * base + text[i]) % mod;
}
return hash;
}