KMP算法(java版本)
2015-12-13 15:34
399 查看
public class KMP { public void KMPMatch(String str,String pStr){ long beginTimes = System.currentTimeMillis(); int[] next = getNext(pStr); int q = 0; int count = 0; for(int i = 0;i<str.length();i++){ while(q>0&&pStr.charAt(q)!=str.charAt(i)){ q = next[q-1]; } if(pStr.charAt(q)==str.charAt(i)){ q++; } if(q==pStr.length()){ System.out.println("Pattern occurs with shift"+ ++count +"times"); q = next[q-1]; } } if(count==0){ System.out.println("There is no matcher!"); } } public int[] getNext(String pStr){ int[] next = new int[pStr.length()]; next[0]=0; int k=0; for(int i=1;i<pStr.length();i++){ while(k>0&&pStr.charAt(k)!=pStr.charAt(i)){ k = next[k-1]; } if(pStr.charAt(k)==pStr.charAt(i)){ k++; } next[i]=k; } return next; } public static void main(String[] args){ KMP kmp; kmp = new KMP(); kmp.KMPMatch("ababacabacbababababacabcbabababaca", "ababaca"); } }
相关文章推荐
- java类初始化
- Intellij idea搭建maven+springMVC开发项目(二)
- Spark---Scala与Java性能比较
- Java虚拟机(二)执行子系统
- struts2知识点总结(3)
- Java&Xml教程(五)使用SAX方式解析XML文件
- Java&Xml教程(五)使用SAX方式解析XML文件
- Java&Xml教程(五)使用SAX方式解析XML文件
- 一个简单的hibernate+mysql的实例java/jsp开发
- Java回炉之反射(二)动态代理
- java RSA/DSA/ECDSA实现数字签名
- java RSA/DSA/ECDSA实现数字签名
- 【原】java环境变量配置&& jdk配置 && 各配置的意义
- java.io
- 【Java自学】计算正多边形的面积
- Eclipse小技巧--快速输入System.out.println();
- java中的集合之Set接口(三)
- java中的简单list排序
- 使用JAVA找出一组数据的最大值
- Java transient关键字