[发明专利]一种基于Sunday算法的字符搜索方法有效
申请号: | 201710375615.6 | 申请日: | 2017-05-24 |
公开(公告)号: | CN107220333B | 公开(公告)日: | 2020-01-31 |
发明(设计)人: | 刘小垒;张小松;牛伟纳;胡斌;王中晴 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F16/903 | 分类号: | G06F16/903 |
代理公司: | 51230 成都弘毅天承知识产权代理有限公司 | 代理人: | 徐金琼;刘东 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 文本 匹配 匹配成功 模式串 算法 计算机软件应用 文本字符串 程序结束 匹配效率 文本模式 移动文本 字符搜索 减小 成功 | ||
1.一种基于Sunday算法的字符搜索方法,其特征在于:包括以下步骤:
步骤1:利用模式串中相邻两字符的信息构建辅助数组,所述模式串为待匹配的字符串;
步骤2:文本窗口与文本字符串左对齐,所述文本字符串为待搜索文本,所述文本窗口在所述文本字符串上滑动;利用所述辅助数组判断所述文本窗口内最后两个字符是否在模式串中出现;若未出现,跳转到步骤4;若出现,则将模式串中出现的字符与所述最后两个字符对齐,判断模式串与文本字符串对应位置上的字符是否匹配,若匹配,则匹配成功程序结束;若不匹配,则跳转到步骤3;
步骤3:采用Sunday算法进行下一次的匹配和跳转,若采用Sunday算法匹配成功,则程序结束;若采用Sunday算法匹配失败,则判断Sunday算法跳转的长度是否超过文本窗口的长度,若超过文本窗口长度,则跳转到步骤4;若未超过文本窗口长度,则重复步骤3;
步骤4:文本窗口向右移动J个字符长度,将文本窗口中的末位字符和文本窗外与所述末位字符相邻的字符作为组合字符,利用辅助数组判断所述组合字符是否在模式串中出现;若出现,跳转到步骤5;若未出现,判断文本窗口是否超出文本字符串,若超出,则匹配失败程序结束;若未超出,重复步骤4的内容;其中模式串的长度和文本窗口的长度均为J个字符长度;
步骤5:模式串中出现的字符与所述组合字符对齐,判断模式串与文本字符串对应位置上的字符是否匹配;若匹配则匹配成功程序结束;若不匹配,跳转到步骤3。
2.根据权利要求1所述的一种基于Sunday算法的字符搜索方法,其特征在于:步骤1中辅助数组构建方式如下:
S201:利用模式串中字符的ASCII码值和设定的index值,计算模式串中相邻两字符的哈希值,采用如下公式:
H[i]=A[i]×index+A[i+1]×(index+1)
其中,i表示模式串中字符的位置序号;H[i]表示模式串中相邻两字符的哈希值;A[i]表示第i个字符的ASCII码值;
S202:利用所有字符两两组合产生的最大哈希值作为辅助数组中元素的个数,且字符两两组合产生的哈希值的大小为所述元素的位置序号;
S203:将S201中计算出的哈希值映射到辅助数组中,具体方式如下:
哈希值H[i]对应位置上的元素为1,若模式串中两组及以上相邻两字符组合产生的哈希值H[i]相同,则将该哈希值H[i]对应位置上的元素设为大于1的数,辅助数组中其余位置上的元素均为0。
3.根据权利要求2所述的一种基于Sunday算法的字符搜索方法,其特征在于:所述利用辅助数组进行判断方法为:计算文本字符串中需要判断的相邻两字符的哈希值,利用该哈希值查找辅助数组中对应位置上的元素,若元素为1,则代表文本字符串中相邻两字符与模式串匹配或出现在模式串中:若元素为0,则代表文本字符串中相邻两字符与模式串不匹配或未出现在模式串中;若元素为大于1的数,则代表该字符组合与其余字符组合的哈希值相同,则进行步骤3的内容。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710375615.6/1.html,转载请声明来源钻瓜专利网。