package learnmen;
import java.util.Arrays;
/**
* 解决模式串 在文本串中是否出现过的算法 如果出现过找最早位置的算法
* Knuth-Morris-Pratt字符串查找算法 简称是KMP算法 常用在 一个文本字符串中 查找 一个模式串 p的出现位置
* kmp算法中的关键是 得到部分匹配表 然后 根据部分匹配表中的数据 来实现我们的优化移动 模板字符串
*
*/
public class Kmp {
public static void main(String[] args) {
String str1 ="BBC ABCDAB ABCDABCDABDE";
String str2="ABCDABD";
int [] next=kmpNext("ABCDABD");
System.out.println(Arrays.toString(next));
System.out.println(kmpSearch(str1,str2,next));
}
/**
*
* @param str1 源字符串
* @param str2 子串
* @param next 子串对应的部分匹配表
* @return 如果返回-1 就说名没有匹配到正确的结果 否则返回第一个匹配的位置
*/
//搜索算法
public static int kmpSearch(String str1,String str2,int [] next){
//遍历 如果 源字符串 遍历完也没有找到就说明没有
for (int i = 0,j=0; i < str1.length(); i++) {
while(j>0&&str1.charAt(i)!=str2.charAt(j)){
KMP实现字符串的匹配
最新推荐文章于 2022-11-24 17:03:50 发布
本文深入探讨了KMP算法的工作原理,并提供了详细的Java代码实现。通过理解该算法,你可以有效地解决字符串匹配问题,避免不必要的比较,提高搜索效率。
摘要由CSDN通过智能技术生成