CN111125459A - 字符串处理方法和装置 - Google Patents

字符串处理方法和装置 Download PDF

Info

Publication number
CN111125459A
CN111125459A CN201911358918.2A CN201911358918A CN111125459A CN 111125459 A CN111125459 A CN 111125459A CN 201911358918 A CN201911358918 A CN 201911358918A CN 111125459 A CN111125459 A CN 111125459A
Authority
CN
China
Prior art keywords
string
characters
matching
character
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911358918.2A
Other languages
English (en)
Inventor
宋佳城
胡衍平
史晶晶
陈雪丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongxiaoyun Iot Institute Co ltd
Original Assignee
Beijing Zhongxiaoyun Iot Institute Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Zhongxiaoyun Iot Institute Co ltd filed Critical Beijing Zhongxiaoyun Iot Institute Co ltd
Priority to CN201911358918.2A priority Critical patent/CN111125459A/zh
Publication of CN111125459A publication Critical patent/CN111125459A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本发明公开了一种字符串处理方法和装置。该方法包括:获取待进行字符串匹配的主串字符和子串字符;将主串字符的排列顺序进行倒置,得到倒置后的主串字符;将子串字符的排列顺序倒置,得到倒置后的子串字符;按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果。通过本发明,达到了提高KMP算法字符匹配效率的效果。

Description

字符串处理方法和装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种字符串处理方法和装置。
背景技术
字符串的模式匹配是对字符串的基本操作之一,广泛应用于生物信息学、信息检索、拼写检查、语言翻译、数据压缩、网络入侵检测等领域,如何简化其复杂性一直是算法研究中的经典问题。字符串的模式匹配实质上就是寻找模式串P是否在主串T中,以及其出现的位置。
KMP算法可在一个主文本字符串S内查找一个词W的出现位置,通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而避免重新检查先前匹配的字符。该算法减少了BF算法中i回溯所进行的无谓操作,极大地提高了字符串匹配算法的效率。
但是,由于KMP算法都是从主文本字符串的首位查找的,如果匹配字符串在主串的最后面,那么KMP算法就会显得低效。
针对相关技术中通过传统KMP算法进行字符匹配效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种字符串处理方法和装置,以解决通过传统KMP算法进行字符匹配效率低的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种字符串处理方法,该方法包括:获取待进行字符串匹配的主串字符和子串字符;将所述主串字符的排列顺序进行倒置,得到倒置后的主串字符;将所述子串字符的排列顺序倒置,得到倒置后的子串字符;按照从头到尾的顺序对所述主串字符和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
进一步地,所述主串字符数为m,子串字符数为n,按照从头到尾的顺序对所述主串字符和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果包括:按照从头到尾的顺序对所述主串字符的前m/2+n-1位和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符的前m/2+n-1位和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
进一步地,所述方法还包括:在匹配过程中如果所述主串字符和所述子串字符匹配成功,或者所述倒置后的主串字符和所述倒置后的子串字符匹配成功,则停止继续匹配,返回匹配结果。
进一步地,按照从头到尾的顺序对所述主串字符的前m/2+n-1位和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符的前m/2+n-1位和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果包括:在未匹配成功的情况下,判断所述主串字符中剩余未匹配的字符的数量是否小于所述子串字符的数量;如果是,则停止继续匹配,返回匹配结果。
进一步地,所述匹配结果包括:如果匹配成功,则返回所述子串字符在所述主串字符中的位置;如果匹配失败,则返回预设的失败指示信息。
为了实现上述目的,根据本发明的另一方面,还提供了一种字符串处理装置,该装置包括:获取单元,用于获取待进行字符串匹配的主串字符和子串字符;第一倒置单元,用于将所述主串字符的排列顺序进行倒置,得到倒置后的主串字符;第二倒置单元,用于将所述子串字符的排列顺序倒置,得到倒置后的子串字符;匹配单元,用于按照从头到尾的顺序对所述主串字符和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
进一步地,所述匹配单元用于:按照从头到尾的顺序对所述主串字符的前m/2+n-1位和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符的前m/2+n-1位和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
进一步地,所述装置还包括:返回单元,用于在匹配过程中如果所述主串字符和所述子串字符匹配成功,或者所述倒置后的主串字符和所述倒置后的子串字符匹配成功,则停止继续匹配,返回匹配结果。
为了实现上述目的,根据本发明的另一方面,还提供了一种存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行本发明所述的字符串处理方法。
为了实现上述目的,根据本发明的另一方面,还提供了一种设备,所述设备至少包括一个处理器,以及与所述处理器连接的至少一个存储器、总线,其中,所述处理器、所述存储器通过所述总线完成相互间的通信,所述处理器用于调用所述存储器中的程序指令,以执行本发明所述的字符串处理方法。
本发明通过获取待进行字符串匹配的主串字符和子串字符;将主串字符的排列顺序进行倒置,得到倒置后的主串字符;将子串字符的排列顺序倒置,得到倒置后的子串字符;按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果,解决了通过传统KMP算法进行字符匹配效率低的问题,进而达到了提高KMP算法字符匹配效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的字符串处理方法的流程图;
图2是根据本发明实施例的字符串处理装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
KMP的算法流程如下:
1.模式串与主串逐一比较。
2.如果失配,模式串指针回溯到满足限制条件的地方,重新比较,而不是如同BF算法一样,主串前移一位从头比较。
3.重复上述过程,直至匹配完成或失败。
每当一趟匹配过程中出现字符比较不等时,不需回溯i指针,而是利用已经得到的部分匹配的结果将模式向右滑动尽可能远的一段距离后,继续进行比较。
设S为目标串,T为模式串,设i指针和j指针分别指示目标串和模式串中正待比较的字符。
开始时,令i=0,j=0。如果Si==Tj,则使i和j的值分别增加l;反之,i不变,j的值退回到j=next[j]的位置(即模式串右滑),然后再对Si和Tj进行比较。依次类推,直到出现下列两种情况之一:
1.j值退回到某个j=next[j]时,有Si==Tj,则指针的值各增加1后,再继续匹配;
2.j值退回到j=-1,此时令指针的值各增加1,也即下一次对Si+1和T0进行比较。
模式匹配KMP算法的时间复杂度为O(m+n),只有当模式与珠串之间存在许多“部分匹配”的情况下显得比朴素字符匹配算法快得多。但是KMP算法最大的特点就是指示主串的指针不需要回溯,整个过程中,对主串仅需从头至尾扫描一遍,这对处理从外设输入的庞大文件很有效,可以边读入边匹配,而无需回头重读。
本发明实施例提供了一种字符串处理方法。
图1是根据本发明实施例的字符串处理方法的流程图,如图1所示,该方法包括以下步骤:
步骤S102:获取待进行字符串匹配的主串字符和子串字符;
步骤S104:将主串字符的排列顺序进行倒置,得到倒置后的主串字符;
步骤S106:将子串字符的排列顺序倒置,得到倒置后的子串字符;
步骤S108:按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
该实施例采用获取待进行字符串匹配的主串字符和子串字符;将主串字符的排列顺序进行倒置,得到倒置后的主串字符;将子串字符的排列顺序倒置,得到倒置后的子串字符;按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果,解决了通过传统KMP算法进行字符匹配效率低的问题,进而达到了提高KMP算法字符匹配效率的效果。
本实施例的技术方案中,对于要进行匹配的主串字符和子串字符,从前往后进行比对,同时从后往前进行比对,按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果,这样比对的时间可以缩短一半,对于子串字符位于子串字符后半部分的情况,能够显著缩短匹配时间,提高字符串匹配效率。
可选地,假设主串字符数为m,子串字符数为n,按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果包括:按照从头到尾的顺序对主串字符的前m/2+n-1位和子串字符进行KMP字符串匹配,同时对倒置后的主串字符的前m/2+n-1位和倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
由于从主串的首尾同时进行匹配,因而每一端只需要遍历一半即可,假设主串字符数为20,子串为5,则从前往后匹配只需各进行10位,但为了防止第10位与子串中的第一位匹配但却到达中间点导致返回错误结果,因而一直遍历到第14位,如果还没有匹配成功,则说明主串的前半部分与子串不能匹配,同样原理,从主串的尾部开始匹配的也是进行到一半后再加4位,如果没有匹配成功,则说明主串的后半部分与子串不能匹配。
可选地,在匹配过程中如果主串字符和子串字符匹配成功,或者倒置后的主串字符和倒置后的子串字符匹配成功,则停止继续匹配,返回匹配结果。
匹配过程中如果两种顺序中的一种匹配成功,则停止继续匹配,返回匹配结果,匹配结果可以是匹配成功和匹配失败,匹配成功的情况下,可以返回子串字符在主串字符中的位置。
可选地,按照从头到尾的顺序对主串字符的前m/2+n-1位和子串字符进行KMP字符串匹配,同时对倒置后的主串字符的前m/2+n-1位和倒置后的子串字符进行KMP字符串匹配,得到匹配结果包括:在未匹配成功的情况下,判断主串字符中剩余未匹配的字符的数量是否小于子串字符的数量;如果是,则停止继续匹配,返回匹配结果。
假设主串字符数为20,子串字符数为5,则从前往后匹配只需各进行10+4位,如果当前匹配剩余字符数为4,且前面都未匹配上,则显然剩余的4位也无法与子串字符匹配,这种情况下可以停止继续匹配,返回匹配结果。
可选地,匹配结果包括:如果匹配成功,则返回子串字符在主串字符中的位置;如果匹配失败,则返回预设的失败指示信息。
预设的失败指示信息可以是文本,例如:失败,也可以是其他类型的指示信息。
下面结合一种优选实施方式对本发明的技术方案进行说明。
如果已知主串字符串长度以及子串字符串,且匹配位置在主串中靠后,那么使用KMP算法会浪费很多时间,因为是从头开始匹配的,KMP算法会显得比较低效,针对这一不足,改进KMP算法。
给出一个例子来说明问题。
主串为:aaaaaaaaaaaaaassssssssssssssssgggggggggabavabavab
子串为:abavabavab
可以看出,子串要到最后才会得到匹配,因此——从主串的首和尾同时进行匹配,那样,就可以提高算法的效率,并且,除了在这个方面提高算法效率以外,当m>>n>>0的时候(m为主串长度,n为子串长度),并且子串并没有在主串中出现的话,那么,在改进算法中,将不需要比较到最末才判断是否存在匹配的子串,而是通过剩下的字符数,来判断是否存在足够的字符与子串匹配,如果不足的话,就是不存在匹配字符,否则就继续匹配下去。
通过把子串逆转,然后沿用旧的KMP算法中的next函数求出其逆转后的子串的next值,或者不需要把子串逆转,而是采用一个新的next函数直接求出其逆转后的next值,能够解决KMP算法在某些特定条件下显得比较低效的问题,
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种字符串处理装置,该装置可以用于执行本发明实施例的字符串处理方法。
图2是根据本发明实施例的字符串处理装置的示意图,如图2所示,该装置包括:
获取单元10,用于获取待进行字符串匹配的主串字符和子串字符;
第一倒置单元20,用于将主串字符的排列顺序进行倒置,得到倒置后的主串字符;
第二倒置单元30,用于将子串字符的排列顺序倒置,得到倒置后的子串字符;
匹配单元40,用于按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
该实施例采用获取单元10获取待进行字符串匹配的主串字符和子串字符;第一倒置单元20将主串字符的排列顺序进行倒置,得到倒置后的主串字符;第二倒置单元30将子串字符的排列顺序倒置,得到倒置后的子串字符;匹配单元40按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果,从而解决了通过传统KMP算法进行字符匹配效率低的问题,进而达到了提高KMP算法字符匹配效率的效果。
可选地,匹配单元40用于:按照从头到尾的顺序对主串字符的前m/2+n-1位和子串字符进行KMP字符串匹配,同时对倒置后的主串字符的前m/2+n-1位和倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
可选地,该装置还包括:返回单元,用于在匹配过程中如果主串字符和子串字符匹配成功,或者倒置后的主串字符和倒置后的子串字符匹配成功,则停止继续匹配,返回匹配结果。
所述字符串处理装置包括处理器和存储器,上述获取单元、第一倒置单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提高KMP算法字符匹配效率。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述字符串处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述字符串处理方法。
本发明实施例提供了一种设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行上述的字符串处理方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取待进行字符串匹配的主串字符和子串字符;将主串字符的排列顺序进行倒置,得到倒置后的主串字符;将子串字符的排列顺序倒置,得到倒置后的子串字符;按照从头到尾的顺序对主串字符和子串字符进行KMP字符串匹配,同时对倒置后的主串字符和倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种字符串处理方法,其特征在于,包括:
获取待进行字符串匹配的主串字符和子串字符;
将所述主串字符的排列顺序进行倒置,得到倒置后的主串字符;
将所述子串字符的排列顺序倒置,得到倒置后的子串字符;
按照从头到尾的顺序对所述主串字符和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
2.根据权利要求1所述的方法,其特征在于,所述主串字符数为m,子串字符数为n,按照从头到尾的顺序对所述主串字符和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果包括:
按照从头到尾的顺序对所述主串字符的前m/2+n-1位和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符的前m/2+n-1位和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在匹配过程中如果所述主串字符和所述子串字符匹配成功,或者所述倒置后的主串字符和所述倒置后的子串字符匹配成功,则停止继续匹配,返回匹配结果。
4.根据权利要求2所述的方法,其特征在于,按照从头到尾的顺序对所述主串字符的前m/2+n-1位和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符的前m/2+n-1位和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果包括:
在未匹配成功的情况下,判断所述主串字符中剩余未匹配的字符的数量是否小于所述子串字符的数量;
如果是,则停止继续匹配,返回匹配结果。
5.根据权利要求1所述的方法,其特征在于,所述匹配结果包括:
如果匹配成功,则返回所述子串字符在所述主串字符中的位置;
如果匹配失败,则返回预设的失败指示信息。
6.一种字符串处理装置,其特征在于,包括:
获取单元,用于获取待进行字符串匹配的主串字符和子串字符;
第一倒置单元,用于将所述主串字符的排列顺序进行倒置,得到倒置后的主串字符;
第二倒置单元,用于将所述子串字符的排列顺序倒置,得到倒置后的子串字符;
匹配单元,用于按照从头到尾的顺序对所述主串字符和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
7.根据权利要求6所述的装置,其特征在于,所述匹配单元用于:
按照从头到尾的顺序对所述主串字符的前m/2+n-1位和所述子串字符进行KMP字符串匹配,同时对所述倒置后的主串字符的前m/2+n-1位和所述倒置后的子串字符进行KMP字符串匹配,得到匹配结果。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
返回单元,用于在匹配过程中如果所述主串字符和所述子串字符匹配成功,或者所述倒置后的主串字符和所述倒置后的子串字符匹配成功,则停止继续匹配,返回匹配结果。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至5中任意一项所述的字符串处理方法。
10.一种设备,其特征在于,所述设备至少包括一个处理器,以及与所述处理器连接的至少一个存储器、总线,其中,所述处理器、所述存储器通过所述总线完成相互间的通信,所述处理器用于调用所述存储器中的程序指令,以执行权利要求1至5中任意一项所述的字符串处理方法。
CN201911358918.2A 2019-12-25 2019-12-25 字符串处理方法和装置 Pending CN111125459A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911358918.2A CN111125459A (zh) 2019-12-25 2019-12-25 字符串处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911358918.2A CN111125459A (zh) 2019-12-25 2019-12-25 字符串处理方法和装置

Publications (1)

Publication Number Publication Date
CN111125459A true CN111125459A (zh) 2020-05-08

Family

ID=70502425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911358918.2A Pending CN111125459A (zh) 2019-12-25 2019-12-25 字符串处理方法和装置

Country Status (1)

Country Link
CN (1) CN111125459A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112069303A (zh) * 2020-09-17 2020-12-11 四川长虹电器股份有限公司 字符串的匹配查找方法、装置及终端
CN113672779A (zh) * 2021-08-11 2021-11-19 国网浙江省电力有限公司绍兴供电公司 用于变电站报文序列检测的字符串匹配方法、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425739A (zh) * 2013-07-09 2013-12-04 国云科技股份有限公司 一种字符串匹配算法
CN109977276A (zh) * 2019-03-22 2019-07-05 华南理工大学 一种基于Sunday算法改进的单模式匹配方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425739A (zh) * 2013-07-09 2013-12-04 国云科技股份有限公司 一种字符串匹配算法
CN109977276A (zh) * 2019-03-22 2019-07-05 华南理工大学 一种基于Sunday算法改进的单模式匹配方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
彭佳容;: "病毒特征值扫描中模式匹配算法的研究", 网络安全技术与应用 *
邹旭楷,王素琴: "允许错误的并行字符串匹配技术", 计算机研究与发展 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112069303A (zh) * 2020-09-17 2020-12-11 四川长虹电器股份有限公司 字符串的匹配查找方法、装置及终端
CN112069303B (zh) * 2020-09-17 2022-08-16 四川长虹电器股份有限公司 字符串的匹配查找方法、装置及终端
CN113672779A (zh) * 2021-08-11 2021-11-19 国网浙江省电力有限公司绍兴供电公司 用于变电站报文序列检测的字符串匹配方法、设备及介质
CN113672779B (zh) * 2021-08-11 2023-07-14 国网浙江省电力有限公司绍兴供电公司 用于变电站报文序列检测的字符串匹配方法、设备及介质

Similar Documents

Publication Publication Date Title
CN107516038B (zh) 一种确定设备指纹的方法及装置
CN106649346B (zh) 数据重复性校验方法及装置
CN109145158B (zh) 一种布隆过滤器中数据的处理方法以及布隆过滤器
CN111125459A (zh) 字符串处理方法和装置
CN111159329A (zh) 敏感词检测方法、装置、终端设备和计算机可读存储介质
US20180285078A1 (en) Method and apparatus for generating random character string
CN111079408A (zh) 一种语种识别方法、装置、设备及存储介质
CN108616361B (zh) 一种识别设备唯一性的方法及装置
US9552284B2 (en) Determining valid inputs for an unknown binary program
CN107784073B (zh) 一种本地缓存的数据查询方法、存储介质和服务器
US11150993B2 (en) Method, apparatus and computer program product for improving inline pattern detection
CN111026736B (zh) 数据血缘管理方法及装置、数据血缘解析方法及装置
CN111221823B (zh) 一种基于链路管理表的数据处理方法及装置
US8645404B2 (en) Memory pattern searching via displaced-read memory addressing
CN110166318B (zh) 一种数据统计方法及装置
CN110019295B (zh) 数据库检索方法、装置、系统以及存储介质
JP2022522790A (ja) ブロックチェーントランザクションを追跡するための方法およびデバイス
CN112559547B (zh) 确定多存储对象副本之间一致性的方法及装置
CN110516122B (zh) 嵌套型数据的合并方法、装置及电子设备
CN103716234A (zh) 一种定位报文内存泄露的方法
CN110046180B (zh) 一种用于定位相似实例的方法、装置和电子设备
CN113778948A (zh) 消息持久化存储方法及装置
US3271745A (en) Register search and detection system
CN112749189A (zh) 数据查询方法及装置
CN113051569B (zh) 一种病毒检测方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination