[发明专利]改进字符串匹配的方法和系统有效
| 申请号: | 201410681087.3 | 申请日: | 2014-11-21 |
| 公开(公告)号: | CN104462266B | 公开(公告)日: | 2018-10-23 |
| 发明(设计)人: | 蒋松林 | 申请(专利权)人: | 北京京东尚科信息技术有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F17/27 |
| 代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 李宝泉;周亚荣 |
| 地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 改进 字符串 匹配 方法 系统 | ||
1.一种改进字符串匹配的方法,包括:
将文本串和模式串的头部对齐,以从右向左开始比较;
根据BM算法的坏字符规则计算预移动距离;
根据预移动距离来获取预备坏字符;
确定是否扩增移动距离;
当确定对移动距离进行扩增时,根据BM算法的坏字符规则计算经扩增的移动距离;
根据预移动距离或经扩增的移动距离来移动模式串;以及
确定是否继续从右向左比较;
其中通过以下公式来计算预移动距离shiftpre:
shiftpre=m-1-f-S(T[k+m-1-f])
其中,m表示待搜索的模式串的长度;f表示已匹配的字符的数目;k表示模式串头部与文本串的相对位置;S(T[k+m-1-f])表示坏字符上一次在模式串P中出现的位置,并且如果坏字符不存在于模式串中,则S(T[k+m-1-f])值为-1。
2.根据权利要求1所述的方法,其中通过以下公式来获取预备坏字符PREbadchar:
PREbadchar=T[(k+m-1-f)+m-1-S(T[k+m-1-f])]
其中,m表示待搜索的模式串的长度;f表示已匹配的字符的数目;k表示模式串头部与文本串的相对位置;T(n)表示待匹配的文本串,长度为n;S(T[k+m-1-f])表示坏字符上一次在模式串P中出现的位置,并且如果坏字符不存在于模式串中,则S(T[k+m-1-f])值为-1。
3.根据权利要求1所述的方法,其中确定是否扩增移动距离包括:
将预备坏字符PREbadchar与字符P[m-1]进行比较;
当二者匹配时,确定不扩增移动距离;以及
当二者不匹配时,确定对移动距离进行扩增。
4.根据权利要求1所述的方法,其中通过以下公式来计算经扩增的移动距离shift:
shift=shiftpre+(m-1)-S(PREbadchar),
其中shiftpre表示预移动距离,S(PREbadchar)表示预备坏字符PREbadchar上一次在模式串中出现的位置。
5.一种改进字符串匹配的系统,包括:
初始化模块,用于将文本串和模式串的头部对齐以从右向左开始比较;
预移动距离计算模块,用于根据BM算法的坏字符规则计算预移动距离;
预备坏字符获取模块,用于根据预移动距离来获取预备坏字符;
扩增判断模块,用于确定是否扩增移动距离;
扩增移动距离计算模块,用于在扩增判断模块确定对移动距离进行扩增时根据BM算法的坏字符规则来计算经扩增的移动距离;
移动模块,用于根据预移动距离或经扩增的移动距离来移动模式串;以及
终止判断模块,用于确定是否继续从右向左比较;
其中通过以下公式来计算预移动距离shiftpre:
shiftpre=m-1-f-S(T[k+m-1-f])
其中,m表示待搜索的模式串的长度;f表示已匹配的字符的数目;k表示模式串头部与文本串的相对位置;S(T[k+m-1-f])表示坏字符上一次在模式串P中出现的位置,并且如果坏字符不存在于模式串中,则S(T[k+m-1-f])值为-1。
6.根据权利要求5所述的系统,其中通过以下公式来获取预备坏字符PREbadchar:
PREbadchar=T[(k+m-1-f)+m-1-S(T[k+m-1-f])]
其中,m表示待搜索的模式串的长度;f表示已匹配的字符的数目;k表示模式串头部与文本串的相对位置;T(n)表示待匹配的文本串,长度为n;S(T[k+m-1-f])表示坏字符上一次在模式串P中出现的位置,并且如果坏字符不存在于模式串中,则S(T[k+m-1-f])值为-1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司,未经北京京东尚科信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410681087.3/1.html,转载请声明来源钻瓜专利网。





