KMP algorithm Explanation
My Java Code implementation
Package Jj4_6;public class KMP {public static Boolean contains (string a,string b) {/* * First step, do a preprocessing on B string */integer[] Fuzhu = New Integer[b.length ()];for (Integer i= 0;i<b.length (); i++) {//I = = 3 o'clock//Nowstr = "Abab" String nowstr =b.substring (0, I+1); Fuzhu[i] = 0;for (Integer j =i;j>0;j--) {//left = ' aba ' String left = nowstr.substring (0,J);//right = "Bab"; String right = nowstr.substring (i-j+1, Nowstr.length ()), if (Left.equals (right)) {fuzhu[i] = J;break;}}} /* * Complete matching */for (integer i = 0;i <= a.length ()-b.length ();) {integer j;for (j =0;j<b.length (); j + +) {if (A.charat (i+j)! = B.charat (j)) {/* * calculates the moving distance of I */if (j==0) I++;elsei = i + ((j-1) + 1-fuzhu[(j-1)]);/* * Restart match */break;}} if (j = = B.length ()) return true; return false;}}
Java implementation of KMP algorithm