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

 Live Demo

#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
Updated on: 2019-07-30T22:30:25+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements