CN112528101A - 字符串匹配方法、装置、设备和存储介质 - Google Patents

字符串匹配方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN112528101A
CN112528101A CN202011533116.3A CN202011533116A CN112528101A CN 112528101 A CN112528101 A CN 112528101A CN 202011533116 A CN202011533116 A CN 202011533116A CN 112528101 A CN112528101 A CN 112528101A
Authority
CN
China
Prior art keywords
character
character string
preset
matched
string
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
CN202011533116.3A
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.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology 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 Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202011533116.3A priority Critical patent/CN112528101A/zh
Publication of CN112528101A publication Critical patent/CN112528101A/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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种字符串匹配方法、装置、设备和存储介质,该方法包括获取待匹配字符串;根据待匹配字符串,得到字符序号表;根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串;根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。本申请通过在智能合约内建立字符串列表以及通过滚动计算的方式计算字符串哈希值,提高了智能合约内部进行字符串匹配的效率,减少了匹配计算量。

Description

字符串匹配方法、装置、设备和存储介质
技术领域
本申请涉及区块链技术领域,具体涉及一种字符串匹配方法、装置、设备和存储介质。
背景技术
随着科学技术的进步和人们意识形态的增长,任何人都可以在公开的网络平台上发表网络文章、网络评论等文字性内容来表达自己的观点。同时,为了避免通过网络平台发表的上述文字性内容中出现一些默认的违禁词,网络平台便需要对用户上传的计划发表的内容进行审核,只有在确定接收到的文字性内容中没有违禁词才会将该内容发布在平台上,反之,一旦在用户上传的计划发表的文字性内容中发现违禁词,便禁止发布该内容。
现有技术中,网络平台通过区块链智能合约来对文字性内容中的违禁词进行确定,具体的,在智能合约中保存由所有违禁词构成的一个黑名单,当有文字性内容上传到网络平台后,通过执行智能合约来对黑名单中的每一个违禁词在文字性内容中进行逐一匹配,以确定文字性内容中是否存在违禁词。
但是,在执行智能合约时,为了防止以太坊网络发生蓄意攻击或滥用的现象,以太坊协议规定交易或合约调用的每个运算步骤,都需要通过燃料GAS进行收费,正是由于每一次匹配都需要通过GAS来补偿矿工为智能合约提供算力所需的计算资源,导致智能合约GAS限制了智能合约的执行时间。在通过智能合约对文字性内容中的违禁词进行逐一匹配时,若需要匹配的内容过长或者关键字列表过长,可能存在限定时间内无法完成匹配,导致智能合约执行失败的问题。
发明内容
本申请提供一种字符串匹配方法、装置、设备和存储介质,旨在解决现有技术中通过智能合约对文字性内容中的违禁词进行逐一匹配时,若需要匹配的内容过长或者关键字列表过长,可能存在限定时间内无法完成匹配,导致智能合约执行失败的问题。
第一方面,本申请提供一种字符串匹配方法,应用于区块链平台,区块链平台上部署有智能合约,智能合约内存储有预设的字符串列表,字符串列表中包括多个预设字符串,以及与多个预设字符串一一对应的预设哈希值,方法包括:
获取待匹配字符串;
根据待匹配字符串,得到字符序号表;
根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串;
根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。
在本申请一种可能的实现方式中,根据待匹配字符串,得到字符序号表,包括:
确定待匹配字符串中的每一个原字符,得到原字符集合;
滤除原字符集合中重复的原字符,得到字符集合;
为字符集合中的每个字符配置对应的标识序号,得到每个字符的标识序号;
将每个字符和每个字符的标识序号关联,并顺序插入字符序号表中,得到字符序号表。
在本申请一种可能的实现方式中,根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,包括:
根据滚动哈希算法和字符序号表,按照预设步长,计算每个目标字符串的哈希值。
在本申请一种可能的实现方式中,根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串,包括:
比较每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值;
若哈希值与预设哈希值相等,则待匹配字符串中存在与预设字符串匹配的目标字符串;
若哈希值与预设哈希值不相等,则待匹配字符串中不存在与预设字符串匹配的目标字符串。
在本申请一种可能的实现方式中,字符串列表中的多个预设字符串分别包括英文字符和/或中文字符。
在本申请一种可能的实现方式中,字符串列表中的多个预设字符串的长度小于或者等于预设的长度阈值。
第二方面,本申请还提供一种字符串匹配装置,应用于区块链平台,区块链平台上部署有智能合约,智能合约内存储有预设的字符串列表,字符串列表中包括多个预设字符串,以及与多个预设字符串一一对应的预设哈希值,装置包括:
获取模块,用于获取待匹配字符串;
匹配处理模块,用于根据待匹配字符串,得到字符序号表;
根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串;
比较输出模块,用于根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。
在本申请一种可能的实现方式中,匹配处理模块具体用于:
确定待匹配字符串中的每一个原字符,得到原字符集合;
滤除原字符集合中重复的原字符,得到字符集合;
为字符集合中的每个字符配置对应的标识序号,得到每个字符的标识序号;
将每个字符和每个字符的标识序号关联,并顺序插入字符序号表中,得到字符序号表。
在本申请一种可能的实现方式中,匹配处理模块具体还用于:
根据滚动哈希算法和字符序号表,按照预设步长,计算每个目标字符串的哈希值。
在本申请一种可能的实现方式中,比较输出模块具体用于:
比较每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值;
若哈希值与预设哈希值相等,则待匹配字符串中存在与预设字符串匹配的目标字符串;
若哈希值与预设哈希值不相等,则待匹配字符串中不存在与预设字符串匹配的目标字符串。
第三方面,本申请还提供一种字符串匹配设备,包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中一个或多个应用程序被存储于存储器中,并配置为由处理器执行以实现第一方面的字符串匹配方法。
第四方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器进行加载,以执行第一方面的字符串匹配方法中的步骤。
本申请中,利用滚动计算的方法,计算待匹配字符串中,与预设字符串长度相等的目标字符串的哈希值,每计算得到一个哈希值再去字符串列表中与对应长度的预设哈希值进行匹配,在匹配时,只需要滚动计算与预设字符串的长度相等的目标字符串的哈希值,而不用每次都去与字符串列表中的所有预设字符串进行匹配,降低了智能合约内进行字符串匹配的计算量,特别是对于预设字符串大多为短字符串的字符串列表来说,可以加速字符串的匹配,提高了匹配效率,确保了智能合约的正常执行。
附图说明
为了更清楚地说明本申请中的技术方案,下面将对本申请描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请中提供的字符串匹配系统的一个实施例场景示意图;
图2是本申请中提供的字符串匹配方法的一个实施例流程示意图;
图3是本申请中生成字符序号表的一个实施例流程示意图;
图4是本申请中滚动计算哈希值的一个实施例结构示意图;
图5是本申请中进行哈希值匹配的一个实施例流程示意图;
图6是本申请中提供的字符串匹配装置的一个实施例结构示意图;
图7是本申请中提供的字符串匹配设备的一个实施例结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本申请,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本申请。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
下面首先对本申请实施例中涉及到的一些名词进行解释说明。
智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议,区块链智能合约具有规则公开透明,合约内的规则以及数据对外部可见,所有交易公开可见,不会存在任何虚假或者隐藏的交易的特点。通常情况下,区块链的“公开透明”、“不可篡改”等特点,都是智能合约赋予区块链的。
本申请提供一种字符串匹配方法、装置、设备和存储介质,以下分别进行详细说明。
请参阅图1,图1为本申请实施例所提供的字符串匹配系统的一个结构示意图,该字符串匹配系统可以包括区块链平台100、与区块链平台100通信连接的用户终端200,该用户终端200即为向区块链平台100提交计划发布的文字性内容即待匹配字符串的终端设备,用户终端200由区块链平台100认证身份后,加入该字符串匹配系统,该区块链平台100上部署有智能合约,该智能合约内存储有预设的字符串列表,该字符串列表中包括多个预设字符串,以及与上述多个预设字符串一一对应的预设哈希值,上述多个预设字符串即为网络平台需要屏蔽的违禁字或违禁词等。
本申请中,该区块链平台100可以是基于多链架构的区块链平台,也可以是基于历史证明的高性能底层区块链协议的区块链平台,例如,本申请中所描述的区块链平台100,其包括但不限于波卡Polkadot区块链平台、常春藤哈希图Hedera Hashgraph区块链平台、蒂凡尼Dfinity区块链平台或索拉纳Solana区块链平台。
本申请中,区块链平台100与用户终端200之间可以通过任何通信方式实现网络通信,包括但不限于,基于第三代合作伙伴计划(3rd Generation Partnership Project,3GPP)、长期演进(Long Term Evolution,LTE)、全球互通微波访问(WorldwideInteroperability for Microwave Access,WiMAX)的移动通信,或基于TCP/IP协议族(TCP/IP Protocol Suite,TCP/IP)、用户数据报协议(User Datagram Protocol,UDP)的计算机网络通信等。用户终端200可以通过上述通信方式向区块链平台100上传计划发布的文字性内容即待匹配字符串。
本申请中,上述的用户终端200可以是一个通用的计算机设备或者是一个专用计算机设备。在具体实现中用户终端200可以是掌上电脑、个人数字助理(Personal DigitalAssistant,PDA)、移动手机、平板电脑、无线终端设备等,本申请不限定上述用户终端200的类型。
本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本申请方案适配的一种应用场景,并不构成对本申请方案应用场景的限定,其他的应用场景还可以包括比图1中所示更多或更少的用户终端200,例如图1中仅示出2个用户终端200,可以理解的,该字符串匹配系统还可以包括与区块链平台100通信连接的其他用户终端,具体此处不作限定。
另外,本申请的字符串匹配系统还可以包括与区块链平台100通信连接的网络平台终端300,该网络平台终端300同样由区块链平台100认证身份后,加入字符串匹配系统,区块链平台100可以通过上述任一通信方式向该网络平台终端300发送经过智能合约匹配之后的用户终端200的文字性内容,通过网络平台终端300向用户展示发布结果。
需要说明的是,图1所示的字符串匹配系统的场景示意图仅仅是一个示例,本申请描述的字符串匹配系统以及场景是为了更加清楚的说明本申请的技术方案,并不构成对于本申请提供的技术方案的限定,本领域普通技术人员可知,随着字符串匹配系统的演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。
首先,本申请提供一种字符串匹配方法,该字符串匹配方法应用于区块链平台,该字符串匹配方法的执行主体为字符串匹配装置,该区块链平台上部署有智能合约,智能合约内存储有预设的字符串列表,字符串列表中包括多个预设字符串,以及与多个预设字符串一一对应的预设哈希值,字符串匹配方法包括:获取待匹配字符串;根据待匹配字符串,得到字符序号表;根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串;根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。
如图2所示,为本申请中提供的字符串匹配方法的一个实施例流程示意图。需要说明的是,虽然在流程示意图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
该字符串匹配方法应用于区块链平台,区块链平台上部署有智能合约,智能合约内存储有预设的字符串列表,字符串列表中包括多个预设字符串,以及与多个预设字符串一一对应的预设哈希值,该字符串匹配方法包括:
S201、获取待匹配字符串。
待匹配字符串即为用户提交到区块链平台的计划发布的文字性内容,本申请实施例的目的即为在待匹配字符串中查找匹配与字符串列表中的预设字符串即违禁词相同的字符串,进而便于后续对匹配到的字符串进行屏蔽后,再将文字性内容发布到网络平台上。
本申请实施例中,区块链平台获取待匹配字符串的方式,可以是被动从用户终端获取,即用户通过用户终端发布待匹配字符串后,用户终端向区块链平台上传该待匹配字符串,从而使得区块链平台获取到待匹配字符串;区块链平台也可以主动从用户终端或具有存储功能的存储器件处获取待匹配字符串,比如用户通过用户终端发布待匹配字符串后,用户终端自身对该待匹配字符串进行存储或者用户终端通过与其通信连接的具有存储功能的存储器件对该待匹配字符串进行存储,区块链平台按照预设的时间间隔如30s,定时访问用户终端或存储器件,若用户终端或存储器件中,存在更新的待匹配字符串,则区块链平台主动获取该待匹配字符串。
本申请实施例中,由于字符串列表中的预设字符串为一些敏感字词或违禁字词,其通常包括中文字符或英文字符中的一种或两种,因此,相应的,待匹配字符串中可以包括中文字符或英文字符中的一种或两种,比如待匹配字符串为“abC中文D英文”。需要说明的是,用户计划在网络平台上发表的内容中也可以包括数字、运算符号、标点符号等字符表现形式,但是由于预设字符串通常为一些敏感字词或违禁字词,因此本申请实施例中只需要对中文字符和英文字符的字符串进行查找匹配,不需要考虑数字、运算符号、标点符号等其他字符表现形式。
S202、根据待匹配字符串,得到字符序号表。
字符串可以理解为字符数组,而字符可以被转换为整数,他们具体的值依赖于他们的编码方式(ASCII/Unicode),这意味着把字符串当成一个整型数组,找到一种方式将一组整型数字转化为一个数字,就能够借助一个预期的输入值来哈希Hash字符串。
本申请实施例中,通过字符序号表来存储待匹配字符串中的多个字符,使得该字符序号表可以用于后续步骤中,计算字符串的哈希值,例如对于待匹配字符串(如“abC中文D英文”),其由“a”、“b”、“C”、“中”、“文”、“D”、“英”、“文”8个字符组成,则其对应的字符序号表可以是(如“<’a’,1>,<’b’,2>,<’C’,3>,<’中’,4>,<’文’,5>,<’D’,6>,<’英’,7>”)。
S203、根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串。
假设字符序号表中的字符数量为N,S为待匹配字符串,长度为K,S0,S1,S2,...,Sn为对应的字符下标,Zi为Si在字符序号表中的标识序号,例如,对于字符“a”、“b”、“c”,他们对应的字符下标为1,2,3,对于字符串“abc”,有Z0=1,Z1=2,Z2=3,那么,对于待匹配字符串S,其哈希计算式为:
HashS=(Z0*NK-1+Z1*NK-2+Z2*NK-3+...+ZK-1*N0)%P
其中,P为预设的大数字,用于防止出现计算冲突。
在上述基础之上,再加入一个字符“d”,那么对于字符串“abcd”来说:
Hasha=1=1
Hashab=1*3+2=5
Hashabc=5*3+3=18
Hashabcd=18*3+4=58
需要注意的是,为了简便,上述对于字符串“abcd”的哈希值计算没有考虑哈希计算式中的对P取余。
通过观察,可以得到任意字符串Si,j的哈希表达式为:
Figure BDA0002850131620000091
比如,对于字符串“bc”,Hashbc=2*31+3=Hashabc-Hasha*32=18-9=9。
因此,本申请实施例中,假设字符串列表中的预设字符串的长度为2和3,那么对于待匹配字符串,同样只需要分别计算长度为2的目标字符串的哈希值Hash2和长度为3的目标字符串的哈希值Hash3即可。
每次扫描到一个字符的时候,如果此时字符的长度小于或者等于最小的预设字符串的长度,只需要直接计算其哈希值,比如,对于第一个字符“a”,Hash2=Hash3=1,当扫描到字符“b”时,Hash2′=Hash3′=1*3+2=5,扫描到字符“c”时,对于长度为2的字符串“bc”的哈希值为Hash2″=Hash2′*3+3-1*32=9,对于长度为3的字符串“abc”的哈希值为Hash3″=Hash3′*3+3=18,以此类推,通过滚动计算可以快速得到所有Hash2和Hash3的值。
S204、根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。
本申请实施例中,通过比较每一次计算得到的哈希值与字符串列表中对应长度的预设字符串的预设哈希值,便可以确定待匹配字符串中是否存在与预设字符串匹配的目标字符串,比如,预设字符串“ab”的预设哈希值为5,而待匹配字符串中,存在长度为2的目标字符串的哈希值Hash2=5,则可以认为待匹配字符串中存在与预设字符串“ab”匹配的目标字符串。
本申请实施例中,利用滚动计算的方法,计算待匹配字符串中与多个预设字符串长度相等的目标字符串的哈希值,每计算得到一个哈希值再去字符串列表中与对应长度的预设哈希值进行匹配,在匹配时,只需要滚动计算与预设字符串的长度相等的目标字符串的哈希值,而不用每次都去与字符串列表中的所有预设字符串进行匹配,降低了智能合约内进行字符串匹配的计算量,特别是对于预设字符串大多为短字符串的字符串列表来说,可以加速字符串的匹配,提高了匹配效率,确保了智能合约的正常执行。
如图3所示,为本申请中生成字符序号表的一个实施例流程示意图,在本申请一些实施例中,字符序号表中包括多个标识序号,其中,标识序号与待匹配字符串的多个字符一一对应,根据待匹配字符串,得到字符序号表,可以进一步包括:
S301、确定待匹配字符串中的每一个原字符,得到原字符集合;
S302、滤除原字符集合中重复的原字符,得到字符集合;
S303、为字符集合中的每个字符配置对应的标识序号,得到每个字符的标识序号;
S304、将每个字符和每个字符的标识序号关联,并顺序插入字符序号表中,得到字符序号表。
本申请实施例中,字符序号表的格式可以是<字符,序号>或<序号,字符>等形式,字符序号表在初始化后,标识序号可以为0,当有新的字符插入字符序号表后,标识序号以1为增量逐渐增加,比如对于待匹配字符串“abca”,其由“a”,“b”,“c”,“a”四个字符组成,则其原字符集合可以包括“a”,“b”,“c”,“a”这4个原字符,由于最后一个字符“a”在字符序号表中已经出现过,即原字符“a”重复了,则滤除后面再次出现的原字符“a”,字符集合可以包括“a”,“b”,“c”这3个字符,然后分别为字符集合中的这些字符按顺序配置对应的标识序号并关联后,有“a”-1、“b”-2、“c”-3,依次插入这3个字符后,字符序号表里面有<’a’,1>,<’b’,2>,<’c’,3>3个元素。
在本申请一些实施例中,根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,可以进一步包括:
根据滚动哈希算法和字符序号表,按照预设步长,计算每个目标字符串的哈希值。
滚动哈希(Rolling Hash)算法是一种在字符串中查找子串的方法,对于一个长度为T的字符串Q,需要在其中查找匹配长度为L的字符串P,则从字符串Q的第一个字符开始,枚举字符串Q中长度为L的子串,并计算每一个子串的哈希值,它可以类似于预设一个长度为L的滑动窗口,框住字符串Q,每迭代一次即计算一次子串的哈希值后,便向字符串Q的最后一个字符的方向移动一位,所以会移动T次,而对于每次每个滑动窗口中的子串都需要迭代这个子串来算哈希值,然而这些子串中很多字符都是重复的。比如,对于一个字符串“algorithms”中长度为5的子串,最开始的两个子串长度为“algor”和“lgori”,利用这两个子串有共同的子串“lgor”这个事实,便可以通过“algor”快速计算得到“lgori”,如“algor”的哈希值减去“a”的哈希值再加上“i”的哈希值。
因此,本申请实施例中,假如字符串列表中的预设字符串的长度3,那么对于待匹配字符串,只需要计算长度为3的目标字符串的哈希值Hash3即可。
如图4所示,为本申请中滚动计算哈希值的一个实施例结构示意图,例如,每次扫描到一个字符的时候,如果此时字符的长度小于或者等于最小的预设字符串的长度即3,可以直接计算其哈希值,比如,对于第一个字符“a”,Hash3=1,按照预设步长1,向右移动一个字符,当扫描到字符“b”时,Hash3′=1*3+2=5,再按照预设步长1,向右移动一个字符,此时扫描到字符“c”,得到如图4中虚线框所示的滑动窗口1,则滑动窗口1中,Hash3″=Hash3′*3+3=18,然后再按照预设步长1,向右移动一个字符,来到如图4中直线框所示的滑动窗口2,则计算滑动窗口2中Hash3″′=Hash3″*3+4-1*32=49,以此类推,通过滚动计算可以快速得到所有滑动窗口中Hash3的值。
如图5所示,为本申请中进行哈希值匹配的一个实施例流程示意图,在本申请一些实施例中,根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串,可以进一步包括:
S501、每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值;
S502、若哈希值与预设哈希值相等,则待匹配字符串中存在与预设字符串匹配的目标字符串;
S503、若哈希值与预设哈希值不相等,则待匹配字符串中不存在与预设字符串匹配的目标字符串。
由于不同的字符串对应有不同的哈希值,因此,本申请实施例中,将每一次计算得到的目标字符串的哈希值与字符串列表中对应长度的预设字符串的预设哈希值进行比较,比如对于长度为3的预设字符串“abc”的哈希值为18,在对待匹配字符串进行滚动哈希计算时,若存在长度为3的目标字符串的哈希值Hash3=18,则说明待匹配字符串中存在预设字符串“abc”,若整轮滚动计算完成后,待匹配字符串中没有长度为3的目标字符串的哈希值为18,即不存在哈希值Hash3=18,则说明待匹配字符串中不存在预设字符串“abc”。
本申请实施例中,字符串列表中的多个预设字符串的长度一般小于或者等于预设的长度阈值(如“5”),因为尤其是对于短字符串来说,其结合滚动哈希算法,相较于较长的字符串,具有更快的匹配速度,如果预设字符串的长度为1-5,当预设字符串有1000个时,那么在进行滚动哈希计算时,只需要对长度为1-5的5个哈希值进行计算及匹配,而不用每次都匹配1000个预设字符串,相较于现有技术来说,提高了区块链在智能合约内部匹配大量短字符串的效率,减少了匹配计算量。
为了更好实施本申请中的字符串匹配方法,本申请还提供一种字符串匹配装置,如图6所示,为本申请中提供的字符串匹配装置的一个实施例结构示意图,本申请的字符串匹配装置应用于区块链平台,区块链平台上部署有智能合约,智能合约内存储有预设的字符串列表,字符串列表中包括多个预设字符串,以及与多个预设字符串一一对应的预设哈希值,字符串匹配装置600包括:
获取模块601,用于获取待匹配字符串;
匹配处理模块602,用于根据待匹配字符串,得到字符序号表;
根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串;
比较输出模块603,用于根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。
本申请实施例中,匹配处理模块利用滚动计算的方法,计算待匹配字符串中与多个预设字符串长度相等的目标字符串的哈希值,每计算得到一个哈希值通过比较输出模块再去字符串列表中与对应长度的预设哈希值进行匹配,在匹配时,只需要滚动计算与预设字符串的长度相等的目标字符串的哈希值,而不用每次都去与字符串列表中的所有预设字符串进行匹配,降低了智能合约内进行字符串匹配的计算量,特别是对于预设字符串大多为短字符串的字符串列表来说,可以加速字符串的匹配,提高了匹配效率,确保了智能合约的正常执行。
在本申请一些实施例中,匹配处理模块602具体可以用于:
确定待匹配字符串中的每一个原字符,得到原字符集合;
滤除原字符集合中重复的原字符,得到字符集合;
为字符集合中的每个字符配置对应的标识序号,得到每个字符的标识序号;
将每个字符和每个字符的标识序号关联,并顺序插入字符序号表中,得到字符序号表。
在本申请一些实施例中,匹配处理模块602具体还可以用于:
根据滚动哈希算法和字符序号表,按照预设步长,计算每个目标字符串的哈希值。
在本申请一些实施例中,比较输出模块603具体可以用于:
比较每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值;
若哈希值与预设哈希值相等,则待匹配字符串中存在与预设字符串匹配的目标字符串;
若哈希值与预设哈希值不相等,则待匹配字符串中不存在与预设字符串匹配的目标字符串。
需要说明的是,本申请中,获取模块601、匹配处理模块602、比较输出模块603的相关内容与上述一一对应,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的字符串匹配装置及其相应模块的具体工作过程,可以参考如图2至图5对应任意实施例中字符串匹配方法的说明,具体在此不再赘述。
为了更好实施本申请的字符串匹配方法,在字符串匹配方法基础之上,本申请还提供一种字符串匹配设备,其集成了本申请所提供的任一种字符串匹配装置,该设备包括:
一个或多个处理器701;
存储器702;以及
一个或多个应用程序,其中一个或多个应用程序被存储于存储器702中,并配置为由处理器701执行上述字符串匹配方法中任一项实施例的字符串匹配方法中的步骤。
如图7所示,其示出了本申请所涉及的字符串匹配设备的一个实施例结构示意图,具体来讲:
该设备可以包括一个或者一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702、电源703和输入单元704等部件。本领域技术人员可以理解,图7中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器701是该设备的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行设备的各种功能和处理数据,从而对设备进行整体监控。可选的,处理器701可包括一个或多个处理核心;处理器701可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,优选的,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。
存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。
该设备还包括给各个部件供电的电源703,优选的,电源703可以通过电源管理系统与处理器701逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源703还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该设备还可以包括输入单元704和输出单元705,该输入单元704可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,该设备还可以包括显示单元等,在此不再赘述。具体在本申请中,设备中的处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能,如下:
获取待匹配字符串;
根据待匹配字符串,得到字符序号表;
根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串;
根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。
本领域普通技术人员可以理解,上述的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请提供一种计算机可读存储介质,该存储介质可以包括:只读存储器(Read Only Memory,ROM)、随机存取记忆体(Random Access Memory,RAM)、磁盘或光盘等。其上存储有计算机程序,计算机程序被处理器进行加载,以执行本申请所提供的任一种字符串匹配方法中的步骤。例如,计算机程序被处理器进行加载可以执行如下步骤:
获取待匹配字符串;
根据待匹配字符串,得到字符序号表;
根据字符串列表和字符序号表,滚动计算待匹配字符串中的每个目标字符串的哈希值,其中,目标字符串为待匹配字符串包括的多个子字符串中,与预设字符串长度相等的子字符串;
根据每个目标字符串的哈希值与对应长度的预设字符串的预设哈希值,确定待匹配字符串中是否存在与预设字符串匹配的目标字符串。
由于该计算机可读存储介质中所存储的指令,可以执行本申请如图2至图5对应任意实施例中字符串匹配方法中的步骤,因此,可以实现本申请如图2至图5对应任意实施例中字符串匹配方法所能实现的有益效果,详见前面的说明,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。
具体实施时,以上各个单元或结构可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元或结构的具体实施可参见前面的实施例,在此不再赘述。
以上对本申请所提供的一种字符串匹配方法、装置、设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种字符串匹配方法,其特征在于,应用于区块链平台,所述区块链平台上部署有智能合约,所述智能合约内存储有预设的字符串列表,所述字符串列表中包括多个预设字符串,以及与多个所述预设字符串一一对应的预设哈希值,所述方法包括:
获取待匹配字符串;
根据所述待匹配字符串,得到字符序号表;
根据所述字符串列表和所述字符序号表,滚动计算所述待匹配字符串中的每个目标字符串的哈希值,其中,所述目标字符串为所述待匹配字符串包括的多个子字符串中,与所述预设字符串长度相等的子字符串;
根据所述每个目标字符串的哈希值与对应长度的所述预设字符串的所述预设哈希值,确定所述待匹配字符串中是否存在与所述预设字符串匹配的所述目标字符串。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待匹配字符串,得到字符序号表,包括:
确定所述待匹配字符串中的每一个原字符,得到原字符集合;
滤除所述原字符集合中重复的所述原字符,得到字符集合;
为所述字符集合中的每个字符配置对应的标识序号,得到所述每个字符的标识序号;
将所述每个字符和所述每个字符标识序号关联,并顺序插入所述字符序号表中,得到所述字符序号表。
3.根据权利要求1所述的方法,其特征在于,所述根据所述字符串列表和所述字符序号表,滚动计算所述待匹配字符串中的每个目标字符串的哈希值,包括:
根据滚动哈希算法和所述字符序号表,按照预设步长,计算所述每个目标字符串的所述哈希值。
4.根据权利要求1所述的方法,其特征在于,所述根据所述每个目标字符串的哈希值与对应长度的所述预设字符串的所述预设哈希值,确定所述待匹配字符串中是否存在与所述预设字符串匹配的所述目标字符串,包括:
比较所述每个目标字符串的哈希值与对应长度的所述预设字符串的所述预设哈希值;
若所述哈希值与所述预设哈希值相等,则所述待匹配字符串中存在与所述预设字符串匹配的所述目标字符串;
若所述哈希值与所述预设哈希值不相等,则所述待匹配字符串中不存在与所述预设字符串匹配的所述目标字符串。
5.根据权利要求1所述的方法,其特征在于,所述字符串列表中的多个所述预设字符串分别包括英文字符和/或中文字符。
6.根据权利要求1所述的方法,其特征在于,所述字符串列表中的多个所述预设字符串的长度小于或者等于预设的长度阈值。
7.一种字符串匹配装置,其特征在于,应用于区块链平台,所述区块链平台上部署有智能合约,所述智能合约内存储有预设的字符串列表,所述字符串列表中包括多个预设字符串,以及与多个所述预设字符串一一对应的预设哈希值,所述装置包括:
获取模块,用于获取待匹配字符串;
匹配处理模块,用于根据所述待匹配字符串,得到字符序号表;
根据所述字符串列表和所述字符序号表,滚动计算所述待匹配字符串中的每个目标字符串的哈希值,其中,所述目标字符串为所述待匹配字符串包括的多个字符串中,与所述预设字符串长度相等的子字符串;
比较输出模块,用于根据所述每个目标字符串的哈希值与对应长度的所述预设字符串的所述预设哈希值,确定所述待匹配字符串中是否存在与所述预设字符串匹配的所述目标字符串。
8.根据权利要求7所述的装置,其特征在于,所述匹配处理模块用于:
确定所述待匹配字符串中的每一个原字符,得到原字符集合;
滤除所述原字符集合中重复的所述原字符,得到字符集合;
为所述字符集合中的每个字符配置对应的标识序号,得到所述每个字符的标识序号;
将所述每个字符和所述每个字符的标识序号关联,并顺序插入所述字符序号表中,得到所述字符序号表。
9.一种字符串匹配设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现权利要求1至6任一项所述的字符串匹配方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行权利要求1至6任一项所述的字符串匹配方法中的步骤。
CN202011533116.3A 2020-12-22 2020-12-22 字符串匹配方法、装置、设备和存储介质 Pending CN112528101A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011533116.3A CN112528101A (zh) 2020-12-22 2020-12-22 字符串匹配方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011533116.3A CN112528101A (zh) 2020-12-22 2020-12-22 字符串匹配方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN112528101A true CN112528101A (zh) 2021-03-19

Family

ID=74975768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011533116.3A Pending CN112528101A (zh) 2020-12-22 2020-12-22 字符串匹配方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN112528101A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113283805A (zh) * 2021-06-18 2021-08-20 广州虎牙科技有限公司 一种评估主播是否履行直播合约的方法及装置
WO2023132046A1 (ja) * 2022-01-07 2023-07-13 富士通株式会社 判定方法、情報処理装置および判定プログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160217186A1 (en) * 2015-01-22 2016-07-28 International Business Machines Corporation Distributed fuzzy search and join with edit distance guarantees
CN106484730A (zh) * 2015-08-31 2017-03-08 北京国双科技有限公司 字符串匹配方法和装置
CN109408681A (zh) * 2018-10-11 2019-03-01 广东工业大学 一种字符串匹配方法、装置、设备及可读存储介质
CN110543516A (zh) * 2019-07-26 2019-12-06 深圳壹账通智能科技有限公司 智能合约处理方法、装置、计算机设备及存储介质
CN111191007A (zh) * 2019-12-30 2020-05-22 山东爱城市网信息技术有限公司 一种基于区块链的文章关键词过滤方法及设备、介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160217186A1 (en) * 2015-01-22 2016-07-28 International Business Machines Corporation Distributed fuzzy search and join with edit distance guarantees
CN106484730A (zh) * 2015-08-31 2017-03-08 北京国双科技有限公司 字符串匹配方法和装置
CN109408681A (zh) * 2018-10-11 2019-03-01 广东工业大学 一种字符串匹配方法、装置、设备及可读存储介质
CN110543516A (zh) * 2019-07-26 2019-12-06 深圳壹账通智能科技有限公司 智能合约处理方法、装置、计算机设备及存储介质
CN111191007A (zh) * 2019-12-30 2020-05-22 山东爱城市网信息技术有限公司 一种基于区块链的文章关键词过滤方法及设备、介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113283805A (zh) * 2021-06-18 2021-08-20 广州虎牙科技有限公司 一种评估主播是否履行直播合约的方法及装置
CN113283805B (zh) * 2021-06-18 2024-04-19 广州虎牙科技有限公司 一种评估主播是否履行直播合约的方法及装置
WO2023132046A1 (ja) * 2022-01-07 2023-07-13 富士通株式会社 判定方法、情報処理装置および判定プログラム

Similar Documents

Publication Publication Date Title
CN109274754B (zh) 用于在区块链网络中同步数据的方法、设备和存储介质
US11379422B2 (en) Text deduplication method and apparatus, and storage medium
EP3550429B1 (en) Instruction generation process multiplexing method and device
CN107944610B (zh) 预测事件流行度方法、服务器及计算机可读存储介质
US10769383B2 (en) Cluster-based word vector processing method, device, and apparatus
CN112528101A (zh) 字符串匹配方法、装置、设备和存储介质
CN109885576A (zh) 一种哈希表创建方法及系统、计算设备及存储介质
CN109656798B (zh) 基于顶点重排序的超级计算机大数据处理能力测试方法
CN103108033A (zh) 文件上传方法及系统
CN112667636B (zh) 索引建立方法、装置及存储介质
CN111177721A (zh) 一种文件的病毒检测方法、装置、终端及存储介质
US9665538B2 (en) Solving satisfiability problems through search
CN107679107B (zh) 一种基于图数据库的电网设备可达性查询方法及系统
EP3926453A1 (en) Partitioning method and apparatus therefor
JP2019016335A (ja) コンピュータシステムにおけるデータ損失を防止するためのシステム及び方法
CN112634182A (zh) 一种基于光场的图像校正方法、装置、设备及存储介质
CN112765269B (zh) 数据处理方法、装置、设备和存储介质
CN109413042A (zh) 基于集中管理平台管理黑名单规则的方法及系统
Shu et al. A quick attribution reduction algorithm based on incomplete decision table
CN111127230A (zh) 动态社交圈确定方法、装置、设备及存储介质
Fang et al. Distributed online adaptive subgradient optimization with dynamic bound of learning rate over time‐varying networks
CN116341023B (zh) 基于区块链的业务地址验证方法、装置、设备及存储介质
CN111431984B (zh) 应用数据的同步方法、同步装置和计算机可读存储介质
US11343102B2 (en) Password protection based on Merkle tree proofs
CN113794558B (zh) 一种XMSS算法中的L-tree计算方法、装置及系统

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210319