LeetCode 28 StrStr 解法为KMP&&Rolling hash

来源:互联网 发布:数据工具培训心得 编辑:程序博客网 时间:2024/05/21 08:55

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

0 0
原创粉丝点击