前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >子字符串查找----暴力查找法

子字符串查找----暴力查找法

作者头像
SuperHeroes
发布于 2018-05-30 09:59:31
发布于 2018-05-30 09:59:31
1.5K00
代码可运行
举报
文章被收录于专栏:云霄雨霁云霄雨霁
运行总次数:0
代码可运行

设文本长度为N,要匹配的模式的长度为M,暴力查找算法在最坏的情况下运行时间与MN成正比,但在处理许多应用程序中的字符串时,它的实际运行时间一般与M+N成正比。

实现方法1:

使用一个值指针i跟踪文本,一个指针j跟踪要匹配的模式,对每一个i,代码首先将j重置为0并不断增大,直到找到了一个不匹配的字符或者是匹配成功(j==M)。

代码语言:javascript
代码运行次数:0
运行
复制
public static int search(String pat, String txt) {
	int M = pat.length();
	int N = txt.length();
	for(int i = 0;i<= N;i++) {
		int j;
		for(j=0;j<M;j++)
			if(txt.charAt(i+j)!=pat.charAt(j))
				break;
		if(j==M)	return i;
	}
	return N;
}

实现方法2(显式回退):

同样使用一个值指针i跟踪文本,一个指针j跟踪要匹配的模式,在i和j指向的字符匹配时,i和j同时后移一位。如果i和j字符不匹配,那么需要回退这两个指针,j指向模式的开头,i指向这次匹配开头的下一个字符。

代码语言:javascript
代码运行次数:0
运行
复制
public static int Search(String pat,String txt) {
	int j, M = pat.length();
	int i, N = txt.length();
	for(i=0,j=0;i<N&&j<M;i++) {
		if(txt.charAt(i)==pat.charAt(j))	j++;
		else {i-=j;j=0;}
	}
	if(j==M)	return i-M;
	else	return N;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.01.26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Modbus测试工具ModbusPoll与Modbus Slave使用方法「建议收藏」
Modbus Poll :Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备,或者其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者你可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。
全栈程序员站长
2022/08/14
13.9K0
Modbus测试工具ModbusPoll与Modbus Slave使用方法「建议收藏」
Modbus PLC攻击分析:Python和Mbtget读写PLC
如今工业控制系统设计的领域包括交通运输、能源行业、装备制造、机械制造等多个国家关键基础领域。工业控制系统的信息安全问题关系到国家安全和社会稳定。Modbus 协议是一种典型的工业控制系统通信协议,是目前应用最为广泛的工业控制协议之一。由于其设计简单、容易开发的特性,使得Modbus TCP 协议极易被恶意攻击者利用,从而对工业控制系统造成破坏和损失。
FB客服
2020/06/04
3.1K0
优秀的 Modbus 从站(从机、服务端)仿真器、串口调试工具
Modbus Slave Emulator 支持多种 Modbus 协议(RTU、ASCII、TCP/IP、UDP/IP、RUT Over TCP、RUT Over UDP);您可以同时创建多个连接,并将多个从站设备加入网络,快速搭建您的测试平台。
用户3871926
2023/08/12
5.2K0
优秀的 Modbus 从站(从机、服务端)仿真器、串口调试工具
IIoT环境下Modbus 高级网关应用
随着大数据,工业4.0,工业物联网(IIoT)等的出现,数字化转型对企业而言迫在眉睫。
剑指工控
2021/11/09
7850
IIoT环境下Modbus 高级网关应用
第6章_libmodbus使用
libmodbus是一个免费的跨平台支持RTU和TCP的Modbus库,遵循LGPL V2.1+协议。libmodbus支持Linux、Mac Os X、FreeBSD、QNX和Windows等操作系统。libmodbus可以向符合Modbus协议的设备发送和接收数据,并支持通过串口或者TCP网络进行连接。
韦东山
2024/06/29
7480
第6章_libmodbus使用
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具
Modbus Master Emulator 支持多种 Modbus 协议(RTU、ASCII、TCP/IP、UDP/IP、RUT Over TCP、RUT Over UDP);您可以同时创建多个连接,监控多个Modbus从站寄存器,快速调试您的从站设备。
用户3871926
2023/09/10
1.8K0
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具
【小工匠聊Modbus】01--Modbus简介
Modbus 是一个请求/应答协议,是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
Java小工匠
2018/08/10
1.2K0
【小工匠聊Modbus】01--Modbus简介
Modbus 调试助手的使用(一)
记得当时还百度来着,然鹅并没有找到自己想要的东西,鉴于此,写一个对初学者友好的教程。
用户5908113
2019/11/18
3.6K0
Modbus 调试助手的使用(一)
组态软件与串口服务器通讯改造
项目改造,客户需要对IFix4.5进行升级,并优化通讯,在不改变原来配置的基础上逐步进行替换。
剑指工控
2021/11/09
2.1K0
组态软件与串口服务器通讯改造
记一次现场Modbus通信排障
组态软件和现场的Modbus设备通信缓慢、丢包,这个是大家多多少少都会遇到的问题。产生问题的原因千奇百怪,今天和大家分享一个前些天遇到的挺有意思的一次故障排查。
剑指工控
2022/03/11
1.7K0
记一次现场Modbus通信排障
【※ ※ ※】流量积算仪Modbus通信的一些小问题
笔者在前段时间的一个应用测试中,一天测试了多种流量积算仪/流量计算机的Modbus通信。由于测试的仪表来自于不同厂家,不同时期的产品(最早的出厂时间为2004年),故虽其标识的均为标准Modbus通信,但其中一些产品有其各自的不同”特点”,在这里聊聊供大家鉴赏。
剑指工控
2021/11/09
6640
使用 Neuron 接入 Modbus TCP 及 Modbus RTU 协议设备
Modbus 是一种通用的工业标准,不同厂商生产的控制设备可以通过 Modbus 连成工业网络,进行集中监控。
EMQ映云科技
2022/07/29
3.3K1
图文详解Modbus-RTU协议
[导读] 大家好,我是逸珺,前面总结了一下RS-485的一些要点,今天来总结一下Modbus-RTU协议,原本想把实现思路也一起发出来,但是感觉太长了,就拆开了。
wenzid
2021/07/20
4.1K0
图文详解Modbus-RTU协议
Modbus RTU 通讯之西门子Smart 200
在工业自动化领域使用最多的免费通讯协议就是Modbus协议,而小型自动化领域西门子PLC也是占据了很大的份额。
剑指工控
2021/11/09
2.8K0
Modbus RTU 通讯之西门子Smart 200
工业控制系统安全之——Modbus学习笔记
O、术语 1 word =2 byte; 1 byte =8 bit. 校验码:校验码是由前面的数据通过某种算法得出的,用以检验该组数据的正确性。代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少这种输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。 常用的校验有:累加和校验SUM、字节异或校验XOR、纵向冗余校验LRC、循环冗余校验CRC…… 离散量输入:主要用来读取单个位的数据,如IO的状态; 线圈:开关输出信号,主要用来写入单个位的数据,与离散量构成组成对位的操
FB客服
2018/02/27
4.1K0
工业控制系统安全之——Modbus学习笔记
完整的Modbus指南
尽管它已经很老了,但Modbus仍然是现场通信最常用的协议之一。它的相对简单性、稳健性和开放性使其成为许多自动化硬件和软件供应商的首选协议。因此,Modbus是组织承诺的安全选择,因为总有设备支持它。
科控物联
2022/03/29
4.6K0
.NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯,flyfire.CustomSerialPort 的使用
串口通讯用于设备之间,传递数据,物联网设备中广泛使用串口方式连接通讯,物联网通讯协议 :Modbus 协议 ASCII、RTU、TCP模式是应用层的协议,与通讯方式无关。
痴者工良
2021/04/26
1.6K0
某次调试中的通信杂谈
本文记述了笔者在调试一个由上位机及PLC、空压机、干燥机、真空泵等组成的系统的通信时所遇到的一些问题,如果您在工作遇到以下品牌的设备,或许可以提供一些参考和帮助。
剑指工控
2021/11/09
1.3K0
Modbus协议详解
Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,从而使得Modbus协议在全球得到了广泛的应用。
苏州程序大白
2021/08/13
2.3K0
Modbus协议详解
modbus协议讲解及实现_通俗易懂近义词
简单地说,在我们的单片机之间互相通信,以及单片机和上位机通信中,规定了不同的内容规范,这个规范是通信的双方都需要遵守的,这样就可以实现两者的通信。
全栈程序员站长
2022/11/07
1.7K0
modbus协议讲解及实现_通俗易懂近义词
相关推荐
Modbus测试工具ModbusPoll与Modbus Slave使用方法「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档