Java 字符串匹配的KMP算法
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算法相关推荐
- [算法系列之二十六]字符串匹配之KMP算法
一 简介 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的关键是利 ...
- 字符串匹配(KMP 算法 含代码)
主要是针对字符串的匹配算法进行解说 有关字符串的基本知识 传统的串匹配法 模式匹配的一种改进算法KMP算法 网上一比較易懂的解说 小样例 1计算next 2计算nextval 代码 有关字符串的基本知 ...
- php随机匹配算法,字符串匹配的KMP算法+PHP实现
1. 前言 看了阮一峰的字符串匹配的KMP算法,写得很好,推荐看看. 不过我想自己写个例子描述一下这个算法,顺便写个PHP实现,于是有了这篇博文. 2. 概述 [来自维基百科] 字符串搜索算法 字符串 ...
- 算法串匹配C++实现字符串匹配的KMP算法
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,迎欢批评指正 之前看<算法导论>符字串匹配分部讲到KMP算法,被弄得云里雾里.天今看到阮一峰写了一篇博客<符字串匹配的KMP算法 ...
- 三十五、字符串匹配问题--KMP算法
一.暴力匹配算法实现字符串匹配 如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有: 如果当前字符匹配成功(即 str1[i] == str2[j]) ...
- 字符串匹配之KMP算法详解
kmp算法又称"看毛片"算法,是一个效率非常高的字符串匹配算法.不过由于其难以理解,所以在很长的一段时间内一直没有搞懂.虽然网上有很多资料,但是鲜见好的博客能简单明了地将其讲清楚. ...
- 字符串匹配的KMP算法(转)
转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算 ...
- 字符串匹配问题 ----- KMP算法
题意: 任意给定一段字符串str("123abc123abc00abc") 再输入一个关键字key("abc") 要求返回str中包含key的所有子串的头下标 ...
- 【转载】字符串匹配的KMP算法
转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 其他参考:htt ...
最新文章
- pynlpir.LicenseError: Your license appears to have expired. Try running pynlpir update.
- 再写循环队列----c++实现
- shell命令查阅端口信息_linux运维实用的42个常用命令总结
- 我们和全球的朋友一起回家
- linux编译静态库的头文件,条件编译,头文件,静态库,共享库与多文件编程
- canvas 实现雷达图
- Vue中数组变动监听
- [WORK]局数据系统
- 最近 搞定这5篇 java相关
- 进销存库存管理软件哪个好用
- 山东大学电路分析实验1 万用表的使用
- Selenium无法定位元素的九种解决方案
- 随机森林——股票涨跌预测模型搭建
- 最简单的解释 webdriver的工作原理
- Python 负载均衡,数据轮询 hash字符串 hashlib
- 编程之美-中国象棋将帅问题
- Google自带翻译无效解决3个步骤
- Re: 从0开始的DMD学习
- 数据可视化软件有哪些?
- matlab 固态硬盘,电脑内存和固态硬盘有什么区别 电脑内存和固态硬盘对比【详解】...