Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
C++ Program to Implement Rolling Hash
Rolling hash is a hash function in which the input is hashed in a window that moves through the input.
Rabin-Karp is popular application of rolling hash. The rolling hash function proposed by Rabin and Karp calculates an integer value. For a string the integer value is numeric value of a string.
The Rabin–Karp string search algorithm is often explained using a very simple rolling hash function that only uses multiplications and additions −
H=c1ak-1+c2ak-2+….+ cka0.
Where, a is a constant, and c1, c2….ck are the input characters. In order to manipulate Huge value of H, mod n is done.
Algorithm
Begin Declare a constant variable P_B of the integer datatype. Initialize P_B= 227. Declare a constant variable P_M of the integer datatype. Initialize P_M= 1000005. Declare a hash() function Pass a string s as parameter. Declare r of the integer datatype. Initialize r = 0. for (int i = 0; i = n.size()) h2 -= power * hstack[i-n.size()] % P_M if (h2 = n.size()-1 && h1 == h2) return i - (n.size()-1); return -1; Declare s1 and s2 to the string type. Print “Enter Input String:” Call getline(line, s1) to enter the string. Print “Enter string to find:” Take input for s2. if(rabin_karp(s2, s1) == -1) print” String not found” else print the string. End.
Example Code
#include#include using namespace std; const int P_B= 227; const int P_M = 1000005; int hash(const string& s) { int r = 0; for (int i = 0; i = n.size()) { h2 -= power * hstack[i-n.size()] % P_M; if (h2 = n.size()-1 && h1 == h2) return i - (n.size()-1); } return -1; } int main() { string s1, s2; cout>s2; if(rabin_karp(s2, s1) == -1) cout Output
Enter Input String: Tutorialspoint Enter String to find: a String a found at position 6 Enter Input String: Tutorialspoint Enter String to find: b String not found
Advertisements
