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.
代码如下:
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