package Four;import java.util.Scanner;/**** 字符型的kmp算法* @author bai* 描述:*     给你一个文本串,再给你一个模式串,*        文本串中有多少个子串的模式串完全匹配*/
public class StringKmp {static int[] nextTable = new int[10000];public static void getNextTable(String pattern){char[] patt = pattern.toCharArray();int m = patt.length;int j =0;nextTable[j] = -1;int i = nextTable[j];while(j<m){if(i==-1||patt[j]==patt[i]){i++;j++;nextTable[j]= i;}else{i = nextTable[i];}}return;}public static int KMP(String text,String pattern){getNextTable(pattern);char[] t = text.toCharArray();int n = t.length;char[] p = pattern.toCharArray();int m  = p.length;int i = 0;int j = 0;int number = 0;while(i<n){if(j==-1||t[i]==p[j]){i++;j++;}else{j = nextTable[j];}if(j==m){number++;j=nextTable[j];}}return number;}public static void main(String[] args) {int caseNumber;Scanner scan  = new Scanner(System.in);System.out.print("caseNumber: ");caseNumber = scan.nextInt();while((caseNumber--)>0){           System.out.println("text:");String text = scan.next();System.out.println("pattern:");String pattern = scan.next();System.out.println(KMP(text,pattern));}}
}

Java 字符串匹配的KMP算法相关推荐

  1. [算法系列之二十六]字符串匹配之KMP算法

    一 简介 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的关键是利 ...

  2. 字符串匹配(KMP 算法 含代码)

    主要是针对字符串的匹配算法进行解说 有关字符串的基本知识 传统的串匹配法 模式匹配的一种改进算法KMP算法 网上一比較易懂的解说 小样例 1计算next 2计算nextval 代码 有关字符串的基本知 ...

  3. php随机匹配算法,字符串匹配的KMP算法+PHP实现

    1. 前言 看了阮一峰的字符串匹配的KMP算法,写得很好,推荐看看. 不过我想自己写个例子描述一下这个算法,顺便写个PHP实现,于是有了这篇博文. 2. 概述 [来自维基百科] 字符串搜索算法 字符串 ...

  4. 算法串匹配C++实现字符串匹配的KMP算法

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,迎欢批评指正 之前看<算法导论>符字串匹配分部讲到KMP算法,被弄得云里雾里.天今看到阮一峰写了一篇博客<符字串匹配的KMP算法 ...

  5. 三十五、字符串匹配问题--KMP算法

    一.暴力匹配算法实现字符串匹配 如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有: 如果当前字符匹配成功(即 str1[i] == str2[j]) ...

  6. 字符串匹配之KMP算法详解

    kmp算法又称"看毛片"算法,是一个效率非常高的字符串匹配算法.不过由于其难以理解,所以在很长的一段时间内一直没有搞懂.虽然网上有很多资料,但是鲜见好的博客能简单明了地将其讲清楚. ...

  7. 字符串匹配的KMP算法(转)

    转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算 ...

  8. 字符串匹配问题 ----- KMP算法

    题意: 任意给定一段字符串str("123abc123abc00abc") 再输入一个关键字key("abc") 要求返回str中包含key的所有子串的头下标 ...

  9. 【转载】字符串匹配的KMP算法

    转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 其他参考:htt ...

最新文章

  1. pynlpir.LicenseError: Your license appears to have expired. Try running pynlpir update.
  2. 再写循环队列----c++实现
  3. shell命令查阅端口信息_linux运维实用的42个常用命令总结
  4. 我们和全球的朋友一起回家
  5. linux编译静态库的头文件,条件编译,头文件,静态库,共享库与多文件编程
  6. canvas 实现雷达图
  7. Vue中数组变动监听
  8. [WORK]局数据系统
  9. 最近 搞定这5篇 java相关
  10. 进销存库存管理软件哪个好用
  11. 山东大学电路分析实验1 万用表的使用
  12. Selenium无法定位元素的九种解决方案
  13. 随机森林——股票涨跌预测模型搭建
  14. 最简单的解释 webdriver的工作原理
  15. Python 负载均衡,数据轮询 hash字符串 hashlib
  16. 编程之美-中国象棋将帅问题
  17. Google自带翻译无效解决3个步骤
  18. Re: 从0开始的DMD学习
  19. 数据可视化软件有哪些?
  20. matlab 固态硬盘,电脑内存和固态硬盘有什么区别 电脑内存和固态硬盘对比【详解】...

热门文章

  1. 吴恩达机器学习笔记五之神经网络
  2. 这21个不太好搜索其含义的特殊符号你都知道吗?
  3. Nature子刊:是穷是富与基因有关?大数据分析发现149个与收入相关基因位点
  4. 获取pheatmap热图聚类后和标准化后的结果
  5. Linux学习 - awk使用
  6. php爬虫js解析,Spider抓取动态内容(JavaScript指向的页面)
  7. 堆之二项堆(Binominal Heap)
  8. Linux编译安装nginx1.4.7版本
  9. Spring Boot笔记-发送纯字符串邮件及带附件邮件
  10. Java文档阅读笔记-C3P0连接池的使用