字符串匹配——KMP算法
KMP算法使用JAVA语言实现。
package BFKMPBM; public class BFMatching { public static void main(String[] args) { long startTime; long endTime; long durationTime; startTime = System.nanoTime(); KMP(); endTime = System.nanoTime(); durationTime = endTime - startTime; System.out.println(durationTime); } //KMP算法 public static void KMP() { String KMP_S = "BBC ABCDAB ABCDABCDABDE"; String KMP_T = "ABCDABD"; int KMPSLength = KMP_S.length(); //主串长度 int KMPTLength = KMP_T.length(); //子串长度 for (int i = 0; i < KMPSLength;) { for (int j = 0; j < KMPTLength;) { if (KMP_S.charAt(i) != KMP_T.charAt(j)) { //49~55行主要是对模式串的观察编写 if (j > 0 && j < 4) { i = i - 1; j = 0; } else if (j == 6) { i = i - 3; j = 0; } i++; } else if (KMP_S.charAt(i) == KMP_T.charAt(j)) { System.out.println(KMP_S.charAt(i) + "==" + KMP_T.charAt(j)); if (j == 6) { System.out.println("匹配成功!"); return; } i++; j++; } } } } } ????
KMP算法重点在于对模式串的观察!建议在第28行设置断点,单步调试,观看代码执行顺序。在自己动手写算法代码的时候才发现调试功能是如此的重要。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。