想问一下字符串匹配为啥不对


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];
            }
        }
    }

把题目发一下,感觉你写复杂了。