字符串匹配方法和装置与流程

文档序号:12177070阅读:310来源:国知局
字符串匹配方法和装置与流程

本申请涉及数据处理领域,具体而言,涉及一种字符串匹配方法和装置。



背景技术:

在编程过程中经常会遇到需要进行字符串匹配的操作,比如判断两个字符串是否相等,或者判断某个字符串中是否包含另外一个字符串等,通常情况下直接利用编程语言本身提供的接口(如IndexOf,Contains等)即可完成,但是在进行长字符串匹配,甚至超长字符串匹配时速度很慢,不能满足要求。

这是因为编程语言提供的接口其实现原理是逐字符匹配,这种匹配方式在字符串越长时性能越差。如要匹配字符串A(abcdefghijk)中是否存在字符串B(acd),需要先截取A中的前三个字符“abc”与B中的字符逐个匹配,匹配失败,则继续从A中取第二到第四个字符“bcd”与B中的字符逐个匹配,失败则继续,直至达到字符串A的末尾。

上述方案的缺点是:每次匹配都需要逐个字符进行匹配,速度比较慢,严重影响程序整体的运行速度。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请实施例提供了一种字符串匹配方法和装置,以至少解决现有技术中进行字符串匹配时速度比较慢的技术问题。

根据本申请实施例的一个方面,提供了一种字符串匹配方法,包括:获取目标字符串并计算所述目标字符串的哈希值;获取待匹配字符串;计算所述待匹配字符串中与所述目标字符串的长度相同的子字符串的哈希值;比较所述子字符串的哈希值与所述目标字符串的哈希值是否相同;当所述子字符串的哈希值与所述目标字符串的哈希值相同时,则确定所述待匹配字符串与所述目标字符串相匹配。

进一步地,比较所述目标字符串的哈希值与所述子字符串的哈希值是否相同包括:将所述待匹配字符串中从第一个字符开始的子字符串作为当前子字符串;计算当前子 字符串的哈希值,并与所述目标字符串的哈希值进行比较;在当前子字符串的哈希值与所述目标字符串的哈希值相同时,停止比较;在当前子字符串的哈希值与所述目标字符串的哈希值不同时,将所述待匹配字符串中的下一个子字符串作为当前子字符串,并返回所述计算当前子字符串的哈希值的步骤,直到下一个子字符串的长度小于所述目标字符串的长度为止,其中,所述待匹配字符串中的相邻两个子字符串相差一个字符的距离。

进一步地,在所述计算待匹配字符串中与目标字符串的长度相同的子字符串的哈希值之前,所述方法还包括:提取所述待匹配字符串中满足预设条件的字符,并获取提取的字符的类型;获取所述待匹配字符串的类型;判断所述提取的字符的类型与所述待匹配字符串的类型是否一致,当不一致时,则修正提取的字符,以使修正后的字符的类型与所述待匹配字符串的类型一致。

进一步地,在所述计算目标字符串的哈希值之前,所述方法还包括:分别获取所述待匹配字符串和所述目标字符串的长度;判断所述待匹配字符串的长度是否大于等于所述目标字符串的长度;当判断为是时,确定计算所述目标字符串的哈希值。

进一步地,所述方法还包括:向所述待匹配字符串添加标记,其中,所述标记用于指示所述待匹配字符串已匹配。

根据本申请实施例的另一方面,还提供了一种字符串匹配装置,包括:第一获取单元,用于获取目标字符串并计算所述目标字符串的哈希值;第二获取单元,用于获取待匹配字符串;计算单元,用于计算所述待匹配字符串中与所述目标字符串的长度相同的子字符串的哈希值;比较单元,用于比较所述子字符串的哈希值与所述目标字符串的哈希值是否相同;第一确定单元,用于当所述目标字符串的哈希值与所述子字符串的哈希值相同时,确定所述待匹配字符串与所述目标字符串相匹配。

进一步地,所述比较单元包括:确定模块,用于将所述待匹配字符串中从第一个字符开始的子字符串作为当前子字符串;计算模块,用于计算当前子字符串的哈希值,并与所述目标字符串的哈希值进行比较;停止模块,用于在当前子字符串的哈希值与所述目标字符串的哈希值相同时,停止比较;获取模块,用于在当前子字符串的哈希值与所述目标字符串的哈希值不同时,将所述待匹配字符串中的下一个子字符串作为当前子字符串,并返回所述计算模块计算当前子字符串的哈希值,直到所述下一个子字符串的长度小于所述目标字符串的长度为止,其中,所述待匹配字符串中的相邻两个子字符串相差一个字符的距离。

进一步地,所述装置还包括:提取单元,用于在所述计算待匹配字符串中与目标 字符串的长度相同的子字符串的哈希值之前,提取所述待匹配字符串中满足预设条件的字符,并获取提取的字符的类型;第三获取单元,用于获取所述待匹配字符串的类型;第一判断单元,用于判断所述提取的字符的类型与所述待匹配字符串的类型是否一致;修正单元,用于在第一判断单元判断为不一致时,修正提取的字符以使修正后的字符的类型与所述待匹配字符串的类型一致。

进一步地,所述装置还包括:第四获取单元,用于在所述计算目标字符串的哈希值之前,分别获取所述待匹配字符串和所述目标字符串的长度;第二判断单元,用于判断所述待匹配字符串的长度是否大于等于所述目标字符串的长度;第二确定单元,用于在第二判断单元判断为是时,确定计算所述目标字符串的哈希值。

进一步地,所述装置还包括:添加单元,用于向所述待匹配字符串添加标记,其中,所述标记用于指示所述待匹配字符已经被匹配。

在本申请实施例中,采用获取目标字符串并计算目标字符串的哈希值;获取待匹配字符串;计算待匹配字符串中与目标字符串的长度相同的子字符串的哈希值;比较子字符串的哈希值与目标字符串的哈希值是否相同;当子字符串的哈希值与目标字符串的哈希值相同时,则确定待匹配字符串与目标字符串相匹配的方式,通过两个相同长度的字符串的哈希值的比较,哈希值相同的字符串为相同的字符串。由于计算哈希值的速度要高于字符一一对应比较的速度,因此,在两个字符串的匹配过程中提高了字符串的匹配速度,解决了现有技术中字符串的匹配速度比较慢的技术问题。尤其在比较长的字符串的匹配过程中,减少了一一对应比较的次数,能够达到显著提高匹配速度的效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的字符串匹配方法的流程图;

图2是根据本申请实施例的一种可选的字符串匹配方法的流程图;

图3是根据本申请实施例的字符串匹配装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

名词解释:

Hash:一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

根据本申请实施例,提供了一种字符串匹配方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本申请实施例的字符串匹配方法的流程图,如图1所示,该方法包括如下步骤:

步骤S102,获取目标字符串并计算目标字符串的哈希值。

步骤S104,获取待匹配字符串。

步骤S106,计算待匹配字符串中与目标字符串的长度相同的子字符串的哈希值。

步骤S108,比较子字符串的哈希值与目标字符串的哈希值是否相同。

步骤S110,当子字符串的哈希值与目标字符串的哈希值相同时,则确定待匹配字 符串与目标字符串相匹配。

本实施例的字符串匹配方法可以应用在需要比较两个字符串是否相同,或者一个字符串是否包含在另外一个字符串中的场景下。比如,在一篇文章中查找一句话,或者,在某个句子中查找某个关键词等。在比较的过程中,与现有技术不同的是,现有技术将字符一一对应比较,字符全部相同的字符串为相同的字符串,而该实施例中是两个相同长度的字符串的哈希值的比较,哈希值相同的字符串为相同的字符串。由于计算哈希值的速度要高于字符一一对应比较的速度,因此,在两个字符串的匹配过程中提高了字符串的匹配速度,解决了现有技术中字符串的匹配速度比较慢的技术问题。尤其在比较长的字符串的匹配过程中,减少了一一对应比较的次数,能够达到显著提高匹配速度的效果。

具体地,待匹配字符串为hoabcdefguafkdoieum,目标字符串为abcdefg,计算目标字符串的哈希值为H(T),截取相同长度的待匹配字符串hoabcde,其字符串的哈希值为H1(S),此时比较H(T)不等于H1(S),则确定abcdefg不同于hoabcde。在待匹配字符串中截取相同长度的待匹配字符串abcdefg,其哈希值为H2(S),比较H(T)和H2(S)为相同,则确定待匹配字符串中包含目标字符串。在该实施例中,目标字符串包含7个字符,按照现有技术中一一对应比较的匹配方法,需要对每个截取的待匹配字符串匹配7次,而本实施例中的匹配方法仅需要比较一次,因此,达到了提高字符串的匹配速度的效果,解决了现有技术中字符串的匹配速度比较慢的技术问题。并且,从该实施例可以明显的看出,目标字符串包含的字符越多,与现有的字符串匹配的方法相比,该实施例的字符串匹配方法的优势越明显,匹配速度越快。

可选地,为了提高匹配的准确性,利用目标字符串与待匹配字符串的每个满足条件的子字符串进行匹配,满足条件的子字符串就是与目标字符串长度相同的字符串,即将待匹配字符串中从第一个字符开始的子字符串作为当前子字符串;计算当前子字符串的哈希值,并与目标字符串的哈希值进行比较;在当前子字符串的哈希值与目标字符串的哈希值相同时,停止比较;在当前子字符串的哈希值与目标字符串的哈希值不同时,将待匹配字符串中的下一个子字符串作为当前子字符串,并返回计算当前子字符串的哈希值的步骤,直到下一个子字符串的长度小于目标字符串的长度为止,其中,待匹配字符串中的相邻两个子字符串相差一个字符的距离。

逐个对具有相同长度的待匹配字符串的哈希值与目标字符串的哈希值进行比较,在查找到待匹配字符串包含目标字符串,则不再比较待匹配字符串中的剩余字符串。如果当前的字符串与目标字符串不同,则利用下一个字符串进行比较,直至待匹配字符串的所有字符都被匹配。

例如,待匹配字符串为hoabcdefguafkdoieum,目标字符串为abcdefg,先截取hoabcde并计算其哈希值,与目标字符串的哈希值比较,判断结果为哈希值不同,则继续截取下一个字符串oabcdef,计算其哈希值并与目标字符串的哈希值进行比较,判断结果为哈希值不同,则继续截取下一个字符串abcdefg作为当前字符串,计算其哈希值并与目标字符串的哈希值进行比较,判断结果为哈希值相同,则不再继续截取哈希值。每次截取的字符串的长度与目标字符串的长度都相同。如果在截取到的字符串kdoieum之前都没有获得哈希值相同的字符串,则比较kdoieum的哈希值与目标字符串的哈希值也不同之后,不再继续截取下一个字符串,确定该待匹配字符串中不包括目标字符串。通过逐个截取与目标字符串的长度相同的字符串来判断待匹配字符串中是否包括目标字符串,可以不漏掉待匹配字符串中的任何一个字符,实现了准确匹配,保证了字符匹配的准确性。

可选地,为了避免匹配出错,提高匹配的准确性,在进行匹配之前修正待匹配字符串的类型使其类型一致,即在计算待匹配字符串中与目标字符串的长度相同的子字符串的哈希值之前,方法还包括:提取待匹配字符串中满足预设条件的字符,并获取提取的字符的类型;获取待匹配字符串的类型;判断提取的字符的类型与待匹配字符串的类型是否一致,当不一致时,则修正提取的字符,以使修正后的字符的类型与待匹配字符串的类型一致。

满足预设条件的字符可以是标点符号等字符,例如,在待匹配字符串中含有中英文标点,待匹配字符为hoa,bcdefguafkdoieum,目标字符串为a,b,即目标字符串里面的标点为英文标点,待匹配字符串中的标点为中文标点,如果不对待匹配字符的标点进行修正,则在匹配时认为待匹配字符中的“a,b”与目标字符串“a,b”为不同的字符串,而实质上待匹配字符中的“a,b”与目标字符串“a,b”为相同的字符串。为了匹配的准确性,将待匹配字符的中文标点修改为英文标点,即与待匹配字符中的其他字符的类型同属于英文。

可选地,两个字符串相同则两个字符串的长度也相同,相同长度的字符串在比较时才有可能得到两个字符串是相同的字符串的结论,如果字符串的长度不同,或者待匹配的字符串的长度不足以截取得到一个与目标字符串的长度相同的字符串,则不再获取子字符串,即在计算目标字符串的哈希值之前,方法还包括:分别获取待匹配字符串和目标字符串的长度;判断待匹配字符串的长度是否大于等于目标字符串的长度;当判断为是时,则确定计算目标字符串的哈希值。

例如,待匹配字符串为hoabcdefguafkdoieum,目标字符串为abcdefg,在判断出子字符串kdoieum的哈希值与目标字符串abcdefg的哈希值不同后,需要从doieum 中的d开始获取下一个子字符串,但是剩余的字符的个数小于目标字符串的长度,不能够获得与目标字符串的长度相同的子字符串,则确定不再获取待匹配字符串的子字符串,匹配结束。

可选地,为了避免针对相同的目标字符串对同一个待匹配字符串进行重复匹配,方法还包括:向待匹配字符串添加标记,其中,标记用于指示待匹配字符串已匹配。带有标记的字符串为匹配过的字符串,无论是否匹配到目标字符串,都不需要对该字符串进行重新匹配。该标记可以在某个字符串匹配过后添加,也可以在匹配之前筛选出明显不需要进行匹配的字符串进行标记,此处不做限定。该标记可以表示不需要对某个目标字符串再次进行匹配,例如,待匹配字符串为hoabcdefguafkdoieum已经被目标字符串abcdefg匹配过,则向待匹配字符串为hoabcdefguafkdoieum添加标记a1,则再次匹配目标字符串abcdefg时,就不需要匹配hoabcdefguafkdoieum;但是,该带有标记a1的待匹配字符串还可以与目标字符串opq进行匹配,不同的目标字符串可以对象相同的待匹配字符中进行匹配。

以下结合图2对本申请的实施例进行说明。

步骤S201,获取源字符串S,及S的长度L(S),即获取待匹配字符串S及其长度。

步骤S202,初始化变量i=0,即待匹配字符串中的第i个字符。

步骤S203,判断L(S)>=i+L(T),判断待匹配字符串中第i个字符起至最后一个字符止的总的字符的长度是否大于目标字符串的长度。如果是,则执行步骤S204,如果否,则执行步骤S209。

步骤S204,截取S的第i个到第i+L(T)个字符作为子字符串S1。

步骤S205,获取S1的hash值H(S1)。

步骤S206,判断H(S1)是否等于H(T)。如果是,则执行步骤S207;如果否,则执行步骤S208。

步骤S207,匹配成功,即哈希值相同匹配成功。

步骤S208,i=i+1,即从待匹配字符串的下一个字符开始截取新的字符串,然后执行步骤S203,判断待匹配字符的长度是否满足目标字符串的要求。

步骤S209,匹配失败。

通过上述步骤,可以实现两个相同长度的字符串的哈希值的比较,哈希值相同的 字符串为相同的字符串。由于计算哈希值的速度要高于字符一一对应比较的速度,因此,在两个字符串的匹配过程中提高了字符串的匹配速度,解决了现有技术中字符串的匹配速度比较慢的技术问题。尤其在比较长的字符串的匹配过程中,减少了一一对应比较的次数,能够达到显著提高匹配速度的效果。

本申请实施例还提供了一种字符串匹配装置。该字符串匹配装置可以执行上述字符串匹配方法,上述字符串匹配方法也可以通过该字符串匹配装置执行。

图3是根据本申请实施例的字符串匹配装置的示意图。如图3所示,该字符串匹配装置包括:第一获取单元10、第二获取单元30、计算单元50、比较单元70和第一确定单元90。其中:

第一获取单元10用于获取目标字符串并计算目标字符串的哈希值。

第二获取单元30用于获取待匹配字符串。

计算单元50用于计算待匹配字符串中与目标字符串的长度相同的字符串的哈希值,得到子字符串的哈希值。

比较单元70用于比较目标字符串的哈希值与子字符串的哈希值是否相同。

第一确定单元90用于当目标字符串的哈希值与子字符串的哈希值相同时,确定待匹配字符串与目标字符串相匹配。

本实施例的字符串匹配方法可以应用在需要比较两个字符串是否相同,或者一个字符串是否包含在另外一个字符串中的场景下。比如,在一篇文章中查找一句话,或者,在某个句子中查找某个关键词等。在比较的过程中,与现有技术不同的是,现有技术采用字符的一一对应比较,字符全部相同的字符串为相同的字符串,而该实施例中是两个相同长度的字符串的哈希值的比较,哈希值相同的字符串为相同的字符串。由于计算哈希值的速度要高于字符一一对应比较的速度,因此,在两个字符串的匹配过程中提高了字符串的匹配速度,解决了现有技术中字符串的匹配速度比较慢的技术问题。尤其在比较长的字符串的匹配过程中,减少了一一对应比较的次数,能够达到显著提高匹配速度的效果。

具体地,待匹配字符串为hoabcdefguafkdoieum,目标字符串为abcdefg,计算目标字符串的哈希值为H(T),截取相同长度的待匹配字符串hoabcde,其字符串的哈希值为H1(S),此时比较H(T)不等于H1(S),则确定abcdefg不同于hoabcde。在待匹配字符串中截取相同长度的待匹配字符串abcdefg,其哈希值为H2(S),比较H(T)和H2(S)为相同,则确定待匹配字符串中包含目标字符串。在该实施例中,目标字 符串包含7个字符,按照现有技术中一一对应比较的匹配方法,需要对每个截取的待匹配字符串匹配7次,而本实施例中的匹配方法仅需要比较一次,因此,达到了提高字符串的匹配速度的效果,解决了现有技术中字符串的匹配速度比较慢的技术问题。并且,从该实施例可以明显的看出,目标字符串包含的字符越多,与现有的字符串匹配的方法相比,该实施例的字符串匹配装置所执行的字符串匹配方法的优势越明显,匹配速度越快。

可选地,为了提高匹配的准确性,利用目标字符串与待匹配字符串的每个满足条件的子字符串进行匹配,满足条件的子字符串就是与目标字符串长度相同的字符串,即比较单元包括:确定模块,用于将待匹配字符串中从第一个字符开始的子字符串作为当前子字符串;计算模块,用于计算当前子字符串的哈希值,并与目标字符串的哈希值进行比较;停止模块,用于在当前子字符串的哈希值与目标字符串的哈希值相同时,停止比较;获取模块,用于在当前子字符串的哈希值与目标字符串的哈希值不同时,将待匹配字符串中的下一个子字符串作为当前子字符串,并返回计算模块计算当前子字符串的哈希值,直到下一个子字符串的长度小于目标字符串的长度为止,其中,待匹配字符串中的相邻两个子字符串相差一个字符的距离。

逐个对具有相同长度的待匹配字符串的哈希值与目标字符串的哈希值进行比较,在查找到待匹配字符串包含目标字符串,则不再比较待匹配字符串中的剩余字符串。如果当前的字符串与目标字符串不同,则利用下一个字符串进行比较,直至待匹配字符串的所有字符都被匹配。

例如,待匹配字符串为hoabcdefguafkdoieum,目标字符串为abcdefg,先截取hoabcde并计算其哈希值,与目标字符串的哈希值比较,判断结果为哈希值不同,则继续截取下一个字符串oabcdef,计算其哈希值并与目标字符串的哈希值进行比较,判断结果为哈希值不同,则继续截取下一个字符串abcdefg作为当前字符串,计算其哈希值并与目标字符串的哈希值进行比较,判断结果为哈希值相同,则不再继续截取哈希值。每次截取的字符串的长度与目标字符串的长度都相同。如果在截取到的字符串kdoieum之前都没有获得哈希值相同的字符串,则比较kdoieum的哈希值与目标字符串的哈希值也不同之后,不再继续截取下一个字符串,确定该待匹配字符串中不包括目标字符串。通过逐个截取与目标字符串的长度相同的字符串来判断待匹配字符串中是否包括目标字符串,可以不漏掉待匹配字符串中的任何一个字符,实现了准确匹配,保证了字符匹配的准确性。

可选地,为了避免匹配出错,提高匹配的准确性,在进行匹配之前修正待匹配字符串的类型使其类型一致,即装置还包括:提取单元,用于在计算待匹配字符串中与 目标字符串的长度相同的子字符串的哈希值之前,提取待匹配字符串中满足预设条件的字符,并获取提取的字符的类型;第三获取单元,用于获取待匹配字符串的类型;第一判断单元,用于判断提取的字符的类型与待匹配字符串的类型是否一致;修正单元,用于在不一致时,修正提取的字符以使修正后的字符的类型与待匹配字符串的类型一致。

满足预设条件的字符可以是标点符号等字符,例如,在待匹配字符串中含有中英文标点,待匹配字符为hoa,bcdefguafkdoieum,目标字符串为a,b,即目标字符串里面的标点为英文标点,待匹配字符串中的标点为中文标点,如果不对待匹配字符的标点进行修正,则在匹配时认为待匹配字符中的“a,b”与目标字符串“a,b”为不同的字符串,而实质上待匹配字符中的“a,b”与目标字符串“a,b”为相同的字符串。为了匹配的准确性,将待匹配字符的中文标点修改为英文标点,即与待匹配字符中的其他字符的类型同属于英文。

可选地,两个字符串相同则两个字符串的长度也相同,相同长度的字符串在比较时才有可能得到两个字符串是相同的字符串的结论,如果字符串的长度不同,或者待匹配的字符串的长度不足以截取得到一个与目标字符串的长度相同的字符串,则不再获取子字符串,即装置还包括:第四获取单元,用于在计算目标字符串的哈希值之前,分别获取待匹配字符串和目标字符串的长度;第二判断单元,用于判断待匹配字符串的长度是否大于等于目标字符串的长度;第二确定单元,用于当判断为是时,则确定计算目标字符串的哈希值。

例如,待匹配字符串为hoabcdefguafkdoieum,目标字符串为abcdefg,在判断出子字符串kdoieum的哈希值与目标字符串abcdefg的哈希值不同后,需要从doieum中的d开始获取下一个子字符串,但是剩余的字符的个数小于目标字符串的长度,不能够获得与目标字符串的长度相同的子字符串,则确定不再获取待匹配字符串的子字符串,匹配结束。

可选地,为了避免针对相同的目标字符串对同一个待匹配字符串进行重复匹配,装置还包括:添加单元,用于向待匹配字符串添加标记,其中,标记用于指示待匹配字符已经被匹配。带有标记的字符串为匹配过的字符串,无论是否匹配到目标字符串,都不需要对该字符串进行重新匹配。该标记可以在某个字符串匹配过后添加,也可以在匹配之前筛选出明显不需要进行匹配的字符串进行标记,此处不做限定。该标记可以表示不需要对某个目标字符串再次进行匹配,例如,待匹配字符串为hoabcdefguafkdoieum已经被目标字符串abcdefg匹配过,则向待匹配字符串为hoabcdefguafkdoieum添加标记a1,则再次匹配目标字符串abcdefg时,就不需要匹配 hoabcdefguafkdoieum;但是,该带有标记a1的待匹配字符串还可以与目标字符串opq进行匹配,不同的目标字符串可以对象相同的待匹配字符中进行匹配。

通过上述实施例,可以实现两个相同长度的字符串的哈希值的比较,哈希值相同的字符串为相同的字符串。由于计算哈希值的速度要高于字符一一对应比较的速度,因此,在两个字符串的匹配过程中提高了字符串的匹配速度,解决了现有技术中字符串的匹配速度比较慢的技术问题。尤其在比较长的字符串的匹配过程中,减少了一一对应比较的次数,能够达到显著提高匹配速度的效果。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1