GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Java/Programs/KMP.java at main · rochards/Java Expand file tree/ Copy pathKMP.javaMore file actions 68 lines (56 loc) · 1.16 KB / Copy pathKMP.javaFile metadata and controls68 lines (56 loc) · 1.16 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 class KMP{ String string; String pattern; int[] lps; KMP(String string,String pattern){ this.string = string; this.pattern = pattern; this.lps = new int[pattern.length()]; } public int kmp() { this.createLPS(); int i = 0,j= 0; while(i<this.string.length() && j<this.pattern.length()) { if(this.string.charAt(i) == this.pattern.charAt(j)) { i++; j++; } else if(j==0) { i++; } else { j = this.lps[j-1]; } } if(j==pattern.length()) { return i-pattern.length(); } return -1; } private void createLPS() { int i=0,j=1; this.lps[0] = 0; while(j<this.pattern.length()) { if(this.pattern.charAt(i) == this.pattern.charAt(j)) { this.lps[j] = i+1; i++; j++; } else if(i ==0) { //this is same as because we wont reach this part if they are not equal, this.pattern.charAt(i) != this.pattern.charAt(j) && i ==0 this.lps[j] = 0; j++; } else { i = this.lps[i-1]; } } } } public class Main{ public static void main(String args[]) { String s = "abcabcabd"; String pattern = "abcabd"; KMP kmp = new KMP(s,pattern); System.out.println(kmp.kmp()); } } |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |