leetcode Implement strStr()
来源:互联网 发布:js原生判断display 编辑:程序博客网 时间:2024/06/05 14:40
Implement strStr().
Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.
朴素匹配好像超时,只能改用kmp了。关于kmp算法就不多说了,是很经典的问题了,我只想补充一下,kmp有两种写法,有一个优化版本的。这两个版本不同之处在于求next数组的不同方法,我使用的是一般的next数组,next数组就是保存最长前缀和后缀的匹配重度。
如果不理解kmp,搜下到处都有了,好久不看,自己推next推了很久才想起来。
class Solution {public: void get_n(const char * pattern,int *p,int n) { p[0]=-1; for(int i=1;i<n;i++) { int j=p[i-1]; while(j>=0&&pattern[j+1]!=pattern[i]) j=p[j]; if(pattern[j+1]==pattern[i]) p[i]=j+1; else p[i]=-1; } } char *strStr(char *haystack, char *needle) { if(!haystack||!needle) return NULL; int m=0,n=0; while(haystack[m])m++; while(needle[n])n++; if(m<n) return NULL; int next[n]; get_n(needle,next,n); int i=0,j=0; while(i<m&&j<n) { if(haystack[i]==needle[j]) { i++;j++; } else if(j==0) i++; else { j=next[j-1]+1; } } if(j==n) return haystack+i-j; return NULL; }};如有不正之处请指正。
0 0
- LeetCode: Implement strStr()
- [Leetcode] Implement strstr()
- Leetcode: Implement strStr
- [Leetcode] Implement strStr()
- LeetCode Implement strStr()
- 【leetcode】Implement strStr()
- [LeetCode]Implement strStr()
- [LeetCode] Implement strStr()
- [LeetCode] Implement strStr()
- LeetCode-Implement strStr()
- LeetCode: Implement strStr()
- LeetCode - Implement strStr()
- LeetCode: Implement strStr()
- 【leetcode】Implement strStr()
- Leetcode: Implement strStr()
- leetcode implement strStr
- LeetCode Implement strStr()
- LeetCode题解:Implement strStr()
- 众多Android 开源项目推荐,给力工作给力学习
- 题目1074:对称平方数
- Android Shape Drawable Resources
- C#和Java变量命名区别(分析有误请指出,刚接触C#还在学习中)
- Android Fragment系列学习笔记之三
- leetcode Implement strStr()
- 最近分布式系统开发小结
- RedHat : SAMBA 服务
- spket.jar不不能win7 64位解决办法
- dede5.7织梦后台广告插件增加图片上传功能
- Delphi7文件操作常用函数一
- 卡尔曼滤波器 – Kalman Filter
- Android PopupWindow介绍及实现菜单效果
- STM32F10x 学习笔记之SysTick 定时器