朴素和KMP模式匹配算法(Java)

朴素模式匹配算法public class Test {(String s,String t,int pos){(i<s.length()&&j<t.length()){if(s.charAt(i)==t.charAt(j)){i++;j++;}else {i = i-j+1;//主串的下一个位置j = 0;//继续第一个位置}}if (j>=t.length()) {return i-t.length();}else {return -1;}}(String[] args) {Test test = new Test();System.out.println(test.Index(“goodgoogle”, “google”, 0));System.out.println(test.Index(“goodgoogle”, “google”, 2));System.out.println(test.Index(“googlegoogle”, “google”, 0));System.out.println(test.Index(“googlegoogle”, “google”, 2));}}

运行结果:

4406KMP模式匹配算法

public class Test {(String[] args) {Test test = new Test();test.getNext(“abcabx”);test.getNext(“abcdex”);System.out.println(test.indexKMP(“goodgoogle”, “google”, 0));}/KMP模式匹配算法/public int[] getNext(String T){int[] next = new int[T.length()];int i = 0;int j = -1;next[i] = j;while(i<T.length()-1){if(j==-1 || T.charAt(i)==T.charAt(j)){i++;j++;next[i] = j;}else {j = next[j];//若字符不相等,,则j值进行回溯。}}for (int k = 0; k < next.length; k++) {System.out.print(next[k]);}System.out.println();return next;}(String S,String T,int pos){[] next = getNext(T);while(i<S.length()&&j<T.length()){if (j == -1 || S.charAt(i) == T.charAt(j)) {i++;j++;}else {//重新开始匹配j = next[j];//j退回到合适的位置,i值不变}}if (j>=T.length()) {return i-T.length();}else {return 0;}}}

运行结果:

-100012-100000-1000104

答:他是憋死的,因为沙漠里没有电线杆撒尿。问:

朴素和KMP模式匹配算法(Java)

相关文章:

你感兴趣的文章:

标签云: