Sunday算法的学习及java实现

在这里插入图片描述
根据上面的步骤我写了一个在一个字符串中查找另一个字符串的算法
java实现代码如下:

 public int Sunday(String haystack, String needle) {
        int hayLen = haystack.length();//主串长度
        int nLen = needle.length();//子串长度
        int i=0;//记录主串比较初始位置
        int j=0;//查找失败的时查看后一个字符在字串中是否存在的变量

        if(hayLen>nLen)
        {
            while(i<hayLen-nLen) {
                if (needle.charAt(0) == haystack.charAt(i))
                {
                    for (int n = 1; n < nLen; n++)
                    {
                        if (needle.charAt(n) != haystack.charAt(n+i))
                        {
                            for (j = 0; j < nLen; j++)
                            {
                                if (needle.charAt(j) == haystack.charAt(i+nLen))
                                {
                                    i=i+nLen-j;
                                    break;
                                }
                            }
                            i= i+nLen+1;
                            break;
                        }
                        else{
                            if(n==nLen-1){
                                return i;
                            }
                           continue;
                        }
                    }
                } else {
                    boolean bool=false;
                    for (j =0; j<nLen; j++)
                    {
                        if (needle.charAt(j) == haystack.charAt(i+nLen))
                        {
                            i=i+nLen-j;
                            bool=true;
                            break;
                        }
                    }
                    if(bool==false)
                    {
                        i= i+nLen+1;
                    }
                }
            }
            return i;
        }
        else{
            System.out.println("后者比前者长,不能进行查找操作");
            return -1;
        }

    }

对这段代码有什么不理解或者发现了此段代码的bug的地方欢迎私信本人一起讨论学习!!

猜你喜欢

转载自blog.csdn.net/c1776167012/article/details/106061699