diff --git a/String_Algo/RabinKrabAlgorithm b/String_Algo/RabinKrabAlgorithm new file mode 100644 index 0000000..2291f44 --- /dev/null +++ b/String_Algo/RabinKrabAlgorithm @@ -0,0 +1,48 @@ +//This Algorithm is badically helpful in Pattern Searching +/* pat -> pattern + txt -> text + q -> A prime number +*/ +Algorithm given in the CLRS book */ +#include +using namespace std; +#define d 256 // d is the number of characters in the input alphabet +void rabinkrabsearch(char pat[], char txt[], int q) +{ + int M = strlen(pat); + int N = strlen(txt); + int i, j; + int p = 0; // hash value for pattern + int t = 0; // hash value for txt + 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 ) + { + for (j = 0; j < M; j++) + { + if (txt[i+j] != pat[j]) + break; + } + if (j == M) + cout<<"Pattern found at index "<< i<