2.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的地方欢迎私信本人一起讨论学习!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值