KMP模板 java版

模式匹配之KMP算法(Java版) 本文档为使用Java代码实现了: 1.朴素的字符串匹配算法; 2.KMP字符串模式匹配算法 详细说明请参见博客: http://blog.youkuaiyun.com/lemon_tree12138/article/details/48488813 立即下载

感谢队友hupo3412提供的模板

nxt数组:最长前缀后缀匹配长度

简易算法思路:对大串每个下标i,小串下标j从0开始,一个个匹配,若匹配成功:i++,j++

匹配失败j返回上一nxt[j]而不是回到0,直到匹配为止

所以我们只要预先维护出nxt即可

java:

    static int[] kmpPre(char x[],int n){//by hupo3412
        int i=0,j=-1;
        int nxt[]=new int[n+5];
        int fail[]=new int[n+5];
        nxt[0]=fail[0]=-1;
        while (i<n){
            while (j!=-1&&x[i]!=x[j])j=fail[j];//不能匹配往前找最长适配
            i++;j++;
            nxt[i]=fail[i]=j;//若匹配,最长前后缀长度 能加1
            //路径压缩,可加可不加
            if(i<n&&x[i]==x[j])fail[i]=fail[j];
        }
        return fail;
    }
    static int kmpCount(char x[],int m,char y[],int n){//x是小串 y是大串
        int ans=0,i=0,j=0;
        int fail[]=kmpPre(x,m);
        while(i<n){
            while(j!=-1&&x[j]!=y[i])j=fail[j];
            i++;j++;
            if(j>=m){
                ans++;
                j=fail[j];
            }
        }
        return ans;
    }

 

把对讲门铃(控制底楼铁门)接入米家服务器 今天讲个跟SDR或者无人机无关的东西,技术含量不高,但是方便了我的生活。 现在家门有智能锁,汽车也可以远程解锁发动,NFC门禁也可以用某些手机复制,唯独楼下的铁门,必须用老式对讲门铃控制。 也就是说其它钥匙都可以不带,就剩这个钥匙还必须随身携带。 另外有时候人不在家,不能开楼下铁门,快递员也没法把东西送上楼。 ...... 阅读详情

相关推荐

汇川机器人与PLC通信-ModbusTCP超详细案例

通过汇川机器人与PLC的ModbusTCP通信项目案例,我们可以了解通讯配置的过程,地址映射的方式,对接信号的转换,运行时序的逻辑等注意事项,帮助我们快速应用到项目中。

weixin_44166380的博客 1万+

KMP算法的Java的模板

【代码】KMP算法的Java的模板。

m0_73862548的博客 131

ENVI5.6 Seamless Mosaic多景影像镶嵌色差问题

多景影像无缝镶嵌色差问题拟解决方法

Matchaya的博客 7703

kmp算法(java模板)

kmp算法实现的java模板

imbzz的博客 231

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 947

信号系统核心概念:卷积、傅里叶变换与抽样定理的工程实践指南

信号与系统是理解现代电子、通信与数字处理技术的基石。其核心在于通过数学工具对物理世界进行建模与分析,其中卷积运算揭示了线性时不变系统对任意输入的响应可分解为冲激响应的叠加,这一原理极大提升了系统测试与分析的效率。而傅里叶变换则提供了从时域到频域的映射,将复杂的时域卷积运算转化为频域的简单乘法,是实现频谱分析、滤波设计的关键。抽样定理则架起了模拟与数字世界的桥梁,明确了无失真数字化的条件。这些基础理论共同构成了滤波器设计、音频处理、图像分析及通信系统等广泛工程应用的技术支柱。本文聚焦于卷积与傅里叶变换,结合冲

weixin_30788619的博客 629

KMP算法模板(Java)

本文主要介绍的是Java实现的KMP算法模板

gaoqiandr的博客 320

保姆级教程:用中移ML307模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码

本文详细介绍了如何使用中移ML307系列模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码的全过程。涵盖高德定位服务和OneOS定位服务的配置步骤、常见错误处理及性能优化技巧,帮助开发者快速实现基站定位功能,提升物联网项目的定位精度和稳定性。

weixin_30632089的博客 505

【数据结构】KMP算法的详解以及使用JAVA来实现

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。

Superkom666的博客 3117

信号处理领域的研究生看过来:手把手教你搞定ICASSP 2025论文投稿(附Latex模板与格式检查清单)

本文为信号处理领域研究生提供ICASSP 2025论文投稿的详细指南,涵盖Latex模板使用、格式检查清单及投稿流程。特别针对IEEE旗舰会议的严格要求和2025年可能出现的新变化,提供预判性建议和实战技巧,帮助作者高效完成论文投稿。

程涛 561

Windows下用Python调用科大讯飞语音唤醒SDK的避坑指南(附完整代码)

本文详细介绍了在Windows平台使用Python调用科大讯飞语音唤醒SDK的全流程,包括环境配置、核心代码实现、典型问题解决方案及进阶开发技巧。通过完整的代码示例和避坑指南,帮助开发者快速集成语音唤醒功能,提升开发效率。

u0v1w2x3的博客 405

KMP java 模板

public int strStr(String haystack, String needle) { char[] s = haystack.toCharArray(); char[] t = needle.toCharArray(); int[] next = new int[t.length]; for (int h = 1, q = 0; h < t.length; h++) { while (q &g..

weixin_46809611的博客 454

攻克反光难题!YOLOv9工业缺陷检测实战:高反光件、微小划痕精准识别(附抗反光代码+产线数据)

文章摘要:本文针对不锈钢、铝合金等高反光工业件的缺陷检测难题,提出了一套“硬件抗反光+YOLOv9小目标增强”的解决方案。通过分析反光干扰(镜面/漫反射)和微小划痕(0.1mm级)两大核心问题,详细介绍了500万像素工业相机+偏振光源的硬件配置方案,以及基于偏振图像融合和超分辨率放大的预处理方法。最终实现误检率1.2%、微小划痕检出率99.3%的工业级检测效果,并提供了可落地的代码实现和车间实测数据。(148字)

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1041

java版KMP算法模板

构建部分匹配表(PMT),这是KMP算法的核心预处理步骤pmt[i]表示pattern[0...i]的最长公共前后缀长度时间复杂度:O(m),m为模式串长度:执行KMP搜索算法利用构建好的部分匹配表在文本中高效搜索模式串时间复杂度:O(n+m),n为文本长度文本:"ABABDABACDABABCABAB"模式串:"ABABCABAB"输出结果为模式串在文本中的起始位置和匹配部分。

2301_81193552的博客 730

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU 1686:Oulipo(KMP模板,子串出现次数)

Oulipo Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 22465Accepted Submissi...

weixin_30388677的博客 91

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

字符串匹配KMP算法Java模板(可直接使用)

KMP算法不做过多介绍,想要了解的同学可以自行学习。这里给出一个可以直接使用的Java模板,代码如下: public class SubstringSearch { //构建失配数组 private int[] computeTemporaryArray(char pattern[]){ int [] lps = new int[pattern.length]; int j =0; for(int i=1; i < pattern.len

乔卿的博客 809

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

KMP模板和模板题目

package 算法模板; import java.util.*; public class KMP { public static void prefix_table(char pattern[],int prefix[],int n) {//找到表 prefix[0] = 0; int len = 0; int i = 1; while(i<n) { if(pattern[i] == pattern[len]) { len++; prefix[i]=len;

nankes的博客 198

kmp模板 java

/*** * * @param desk匹配串 * @return next数组 */ public static int[] next(String desk) { int next[] = new int[desk.length() + 1]; int i = 0, k = -1; while (i &lt; desk.length()) { i...

q1248807225的博客 456

KMP模板匹配算法——六步搞定KMP

KMP算法——六步搞定KMP 1.什么是KMP KMP 算法是 D.E.Knuth、J,H,Morris 和 V.R.Pratt 三位大佬共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 模板匹配算法。该算法相对于 Brute-Force(暴力)算法有比较大的改进,主要是消除了主串指针的回溯,提高时间效率。(空间换时间) 2.KMP与朴素模板匹配(Brute-Force...

LH is programming hard 827

java版的KMP算法(next数组)

package com.baidu; import java.util.Arrays; public class KMP { &amp;nbsp;public static void main(String [] args){ &amp;nbsp;&amp;nbsp;int [] next=new int[7]; &amp;nbsp;&amp;nbsp;char [] big=&quot;ababxbababcdabdabcadfdsss&quot;.

qq_30290795的博客 565

KMP-【java模板】

import java.util.Scanner; public class Main{ static Scanner input = new Scanner(System.in); static int[] x = new int[1000000]; static int[] y = new int[10000]; static int[] next = new...

Maple丶峰 327

KMP算法模板(C/C++)

KMP算法模板(C/C++)

m0_71934846的博客 2153

KMP+扩展KMP

KMP next数组表示P[j]以前最长相同前缀后缀 若下标从0开始(以下模板就采用这种方式),next[ i ] 表示前面长度为 i 的字符串前缀和后缀相等的最大长度为 next[ i ] 。 若下标从1开始,则next[ i ] 表示前面长度 i - 1的字符串中前缀和后缀相等的最大长度为 next[ i ] - 1 两种方式当S[i]与P[j]不同时j都应该移动到next[j] const ...

UniverseofHK的博客 777

acwing KMP算法java版实现

属于典型的KMP算法,介绍了next数组的产生 KMP匹配的完整过程

qq_41810415的博客 818

KMP模板(具体代码)

KMP模板

Monkey_king2017cn的博客 785

AcWing 831. KMP(KMP) Described by Java

Today is a very difficult and messy algorithm—KMP, used to deal with the String matching problem. 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串P在模式串S中多次作为子串出现。 求出模板串P在模式串S中所有出现的位置的起始下标。 输入格式 第一行输入整数N...

SoKeeGan 147
上一篇: [leetcode] 85. 最大矩形
下一篇: hdu1426 hdu3111 poj2676回溯法解数独
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值