模式匹配——Sunday算法
来源:互联网 发布:手机验钞机软件 编辑:程序博客网 时间:2024/06/04 19:23
- 今天看到一个新的模式串匹配算法,比我在课堂上学的那个KMP简单多了,而且很好理解啊,就是写的时候要特别注意索引的变化,千万不能写错哟!
public class Solution { public int strStr(String haystack, String needle) { if(haystack==null||haystack.length()<needle.length()){ return -1; } if(haystack.length()==0||needle.length()==0){ return 0; } int i = 0; int j = 0; while(i<haystack.length()){ if(haystack.charAt(i)==needle.charAt(j)){ //先进行匹配,若匹配成功,则两指针向后移动 i++; j++; }else{ //我们把模式串在文本串上滑动 int index = i+needle.length()-j; //匹配不成功,则获取当前文本串中对应于整个模式串的下一位 int occure; if(index>=haystack.length()){ //当然这里要判断一下下一位是否存在 return -1; }else{ occure = needle.lastIndexOf(haystack.charAt(index)); //然后再判断这个字符在模式串中的位置,一定要注意是lastIndexOf } if(occure==-1){ i = index + 1; }else{ i = index -occure; //将整个模式串滑动至cooure正好与index元素对应 } j = 0; //此时模式串回到最前面 } if(j==needle.length()){ //如果模式串已经匹配完,则返回匹配成功的初始位置 return i-needle.length(); } } return -1; }}
- 重点是两个移动:若下一位不在模式串中,则i直接移动到Index的下一位,若下一位在模式串中的occure,则i移动到Index-occure的位置(保证index元素和模式串中occure元素对齐)。并且注意找occure时是反向找的,嗯,就酱紫。
0 0
- 【模式匹配】之 —— Sunday算法
- 【模式匹配】之 —— Sunday算法
- 模式匹配——Sunday算法
- sunday模式匹配算法
- 字符串模式匹配:Sunday算法
- 4.5模式匹配-Sunday算法
- 字符串模式匹配sunday算法
- 字符串匹配——Sunday算法
- 字符串匹配——Sunday算法
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
- 求二叉树的先序遍历
- JavaScript判断输入是否为数字类型(代码记录...)
- Android闹钟AlarmManager-通知NotificationManager-自定义通知栏
- 谷哥的小弟学后台(17)——JSP(3)
- linux网络编程常用头文件
- 模式匹配——Sunday算法
- 头文件iomanip用法
- 这儿有自学前端开发的吗-
- ReactiveCocoa(RAC)学习
- 算法提高 上帝造题五分钟 (水题)
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- HTTP1.1比HTTP1.0增加的新的状态码
- FZU 2168 防守阵地I (模拟 简单规律)
- css实现三角形