class Solution {
public int strStr(String haystack, String needle) {
int begin=0;
if(needle=="")
return 0;
char[] pattern=needle.toCharArray();
char[] str=haystack.toCharArray();
int patternLen=needle.length();
int hayLen=haystack.length();
int[]next=new int[patternLen];
int i=0,j=0;
getNext(pattern,next);
while(i<hayLen&&j<patternLen){
if(j==-1||str[i]==pattern[j]){
i++;
j++;
}else {
j=next[j];
}
}
if(j==patternLen)return i-j;
else return -1;
}
public static void getNext(char[] pattern,int[] next){
int len=pattern.length;
int i=0,j=-1;
next[0]=-1;
while(i<len){
if(j==-1){
i++;
j++;
}else if(pattern[i]==pattern[j]){
i++;
j++;
next[i]=j;
}else{
j=next[j];
}
}
}
把题目发一下,感觉你写复杂了。