KMP算法代码(java版)
2013-04-19 15:42
495 查看
JAVA代码如下:
主串:asfsdfssaaabcadsdfaaaaaaaadsf
子串: fsdfss
主串匹配的位置从:3到8
暂时放博客里存起来,以备不时之需O(∩_∩)O哈!。。。。。
public class KMP { public static void main(String[] args) { KMP kmp = new KMP(); String target="asfsdfssaaabcadsdfaaaaaaaadsf"; String mode="fsdfss"; boolean result=kmp.mathString(target, mode); if(!result){ System.out.println("主串:"+target); System.out.println("子串:"+mode); System.out.println("没有找到匹配的子串"); } } public boolean mathString(String target, String mode) { int[] next = getNextArray(mode); int i = 0; int j = 0; while (i < target.length() && j < mode.length()) { if (j == 0 || target.charAt(i) == mode.charAt(j)) { i++; j++; } else { if(next[j]==-1){ j=0; i++; }else{ j=next[j]; } } } if (j == mode.length()){ System.out.println("主串:"+target); System.out.print("子串:"); for(int t=0;t<i-mode.length();t++){ System.out.print(" "); } System.out.println(mode); System.out.println("主串匹配的位置从:"+(i-mode.length()+1)+"到"+i); return true; } return false; } public int[] getNextArray(String mode) { int j = 0, k = -1; int[] next = new int[mode.length()]; next[0] = -1; while (j < mode.length()-1) { if (k == -1 || mode.charAt(j) == mode.charAt(k)) { ++j; ++k; if (mode.charAt(j) != mode.charAt(k)) { next[j] = k; } else { next[j] = next[k]; } } else k = next[k]; } return next; } }输出结果:
主串:asfsdfssaaabcadsdfaaaaaaaadsf
子串: fsdfss
主串匹配的位置从:3到8
暂时放博客里存起来,以备不时之需O(∩_∩)O哈!。。。。。
相关文章推荐
- KMP算法的简单总结以及java代码实现
- 7、KMP算法实现--Java代码
- kmp算法java代码
- JAVA实现KMP算法理论和示例代码
- 算法 字符串匹配之朴素算法和KMP算法及JAVA代码实现
- 经典KMP算法C++与Java实现代码
- TFIDF算法,java代码实现
- 关于Java产生随机数代码
- Android平台下使用lua调用Java代码经验总结
- Eclipse Android 代码自动提示消失解决办法Java xml
- NET2java 一个net代码向java 的代码转换工具
- 基于Java Socket的文件UpLoad代码(完美版)-用递归解决java的目录树遍历
- Java.JDk文档中的JFileChooser示例代码
- [改善Java代码]使用CountDownLatch协调子线程
- 微信公众平台java开发详解(工程代码+解析)
- Java对齐编写代码
- JAVA代码执行顺序
- Java 代码收集
- 【常用JAVA代码片段】在android中如何打开文件节点,写节点
- JAVA实现的简单万年历代码