diff --git a/KMP_algo.cpp b/KMP_algo.cpp new file mode 100644 index 0000000..630c2cb --- /dev/null +++ b/KMP_algo.cpp @@ -0,0 +1,65 @@ + +#include +#include +using namespace std; +void preKMP(string pattern, int f[]) +{ + int m = pattern.length(), k; + f[0] = -1; + for (int i = 1; i < m; i++) + { + k = f[i - 1]; + while (k >= 0) + { + if (pattern[k] == pattern[i - 1]) + break; + else + k = f[k]; + } + f[i] = k + 1; + } +} + +//check whether target string contains pattern +bool KMP(string pattern, string target) +{ + int m = pattern.length(); + int n = target.length(); + int f[m]; + preKMP(pattern, f); + int i = 0; + int k = 0; + while (i < n) + { + if (k == -1) + { + i++; + k = 0; + } + else if (target[i] == pattern[k]) + { + i++; + k++; + if (k == m) + return 1; + } + else + k = f[k]; + } + return 0; +} + +int main() +{ + string tar = "Roshil is a coder who likes to code"; + string pat = "code"; + if (KMP(pat, tar)) + cout<<"'"< +using namespace std; + + +#define V 5 + +// A utility function to find the vertex with +// minimum key value, from the set of vertices +// not yet included in MST +int minKey(int key[], bool mstSet[]) +{ + // Initialize min value + int min = INT_MAX, min_index; + + for (int v = 0; v < V; v++) + if (mstSet[v] == false && key[v] < min) + min = key[v], min_index = v; + + return min_index; +} + +// A utility function to print the +// constructed MST stored in parent[] +void printMST(int parent[], int graph[V][V]) +{ + cout<<"Edge \tWeight\n"; + for (int i = 1; i < V; i++) + cout<