diff --git a/rabinkarp.cpp b/rabinkarp.cpp new file mode 100644 index 0000000..47557ac --- /dev/null +++ b/rabinkarp.cpp @@ -0,0 +1,66 @@ +#include +#include +using namespace std; + +#define d 256 + +void search(char pat[], char txt[], int q) +{ + int M = strlen(pat); + int N = strlen(txt); + int i, j; + int p = 0; + int t = 0; + int h = 1; + + for (i = 0; i < M - 1; i++) + h = (h * d) % q; + + for (i = 0; i < M; i++) + { + p = (d * p + pat[i]) % q; + t = (d * t + txt[i]) % q; + } + + for (i = 0; i <= N - M; i++) + { + if ( p == t ) + { + bool flag = true; + + for (j = 0; j < M; j++) + { + if (txt[i+j] != pat[j]) + { + flag = false; + break; + } + } + + if (j == M) + cout<<"Pattern found at index "<< i<