您的位置:首页 > 其它

LeetCode 28 StrStr 解法为KMP&&Rolling hash

2016-06-08 00:00 507 查看
Implement strStr()

Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Update (2014-11-02):
The signature of the function had been updated to return the index instead of the pointer. If you still see your function signature returns a
char *
or
String
, please click the reload button to reset your code definition.
解题思路:使用了暴力法,时间复杂度较高,O(n*m),思路很简单,一个个遍历匹配,这个题的最优解即是大名鼎鼎的KMP算法,这个算法每次都忘了。
代码如下:

public int strStr(String haystack, String needle) {
int al = haystack.length();
int bl = needle.length();
if(bl==0){
return 0;
}
if(al<bl){
return -1;
}
int i=0;
while(i < al) {
int j=0;
int t = i;
while(j!=bl){
if(needle.charAt(j)==haystack.charAt(t)){
j++;
t++;
if(t>=al){
break;
}
}else{
break;
}
}
if(j==bl){
return i;
}
i++;
}

return -1;
}


当然除了KMP之外也有其他的线性算法,比如Rolling hash。

见博客:
http://blog.csdn.net/linhuanmars/article/details/20276833
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: