串匹配算法之Sunday算法
来源:互联网 发布:淘宝收件人名字大全 编辑:程序博客网 时间:2024/06/06 07:20
sunday算法据说是效率比KMP,BM都好的算法
sunday算法的关注点与kmp算法不一样,sunday算法关注的是目标串
匹配则好,如果不匹配,则看下一位是否在模式串中(因为当前已经失配,那么下一位肯定是要参与匹配的)
如果下一位在模式串中有,则关于最右边的这位进行对齐(因为可能这个下一位在模式串中不止一个)
下面模拟一下算法
第一趟
acabaabaabcacaabcabaabcac 失配,看i的下一位是a,在模式串中有好几个,将最右边的一个与它对齐第二趟
acabaabaabcacaabc abaabcac失配,看i的下一位是c,在模式串中有好几个,将最右边的一个与它对齐
第三趟
acabaabaabcacaabc abaabcac失配,看i的下一位是a,在模式串中有好几个,将最右边的一个与它对齐
第四趟
acabaabaabcacaabc aabaabcac匹配成功
根据上面的匹配过程,可以写出下面的Sunday算法
public int strStr(String haystack, String needle) {
int tab=0;
int i=0,j=0;
int countj=0;
int counti=0;
int k=0;
while(i<haystack.length()&&j<needle.length()) {
if(haystack.charAt(i)==needle.charAt(j)){
i++;
j++;
counti++;
countj++;
} else {
tab=i-counti+needle.length();
k=j-countj+needle.length()-1;
countj=0;
counti=0;
j=0;
while(k>=j && tab<haystack.length()&&needle.charAt(k)!=haystack.charAt(tab) ) {
k--;
}
if(k==-1) i=tab+1;
else i=tab-(k-j);
}
}
if(j==needle.length()) return tab-k;
else return -1;
}
}
0 0
- 串匹配算法之Sunday算法
- 字符串匹配之sunday算法
- 字符串匹配之sunday算法
- 字符串匹配算法 之 Sunday
- 字符串匹配算法之Sunday算法
- 基本算法之字符串匹配算法Sunday
- 字符串匹配算法之sunday算法
- 字符串匹配算法之sunday算法
- 串模式匹配之BF和KMP,Sunday算法
- 字符串模式匹配之:Sunday算法
- 【模式匹配】之 —— Sunday算法
- 【模式匹配】之 —— Sunday算法
- 字符串匹配之KMP、BoyerMoore、Sunday算法
- 字符串匹配---Sunday算法
- 字符串匹配Sunday算法
- 字符串匹配-sunday算法
- 字符串匹配--Sunday算法
- 字符串匹配 sunday算法
- Codeforces Round #338 (Div. 2) 615B Longtail Hedgehog(dp)
- Algorithm intro - Select Sort
- 方便代理下单的EcStore收货地址一键分析插件,同时支持淘宝/京东/一号店
- blkid 命令
- 上传编辑头像
- 串匹配算法之Sunday算法
- Mac 批量删除 .svn 文件
- 【虚幻4】学习总结6-第三人称角色01
- 编辑距离问题
- Algorithm Intro - Bubble Sort
- 《Linux命令、编辑器与Shell编程》读书笔记12-函数和脚本
- spring学习(转载)
- 初学jQuery ajax
- 数据库之简单的数据查询