leetcode-28-实现strStr() 字符串匹配

public int strStr(String haystack, String needle) {
        //不满足的条件直接返回-1
        if (haystack.length() < needle.length() || haystack == null){
            return -1;
        }

        if (needle.length() == 0 || needle == null){
            return 0;
        }

        int L = haystack.length();
        int R = needle.length();

        int lindex = 0;
        while (lindex < L - R + 1){
            //首字母不相同,直接跳过
            while (lindex < L - R + 1 && haystack.charAt(lindex) != needle.charAt(0)) lindex++;

            int rindex = 0;
            int curLength = 0;
            //即便haystack中有多个needle ,while循环可以控制只遍历到第一个needle 因为:rindex < R
            while (lindex < L && rindex < R && haystack.charAt(lindex) == needle.charAt(rindex)){
                lindex++;
                rindex++;
                curLength++;
            }
            //符合条件,返回
            if (curLength == needle.length()){
                return lindex - R;
            }
            //如果没有找到合适的子串,母串的指针lindex = lindex - rindex + 1
            lindex = lindex - rindex + 1;
        }
        return -1;
    }

1、双指针遍历两个字符串,当子串为空时,直接返回0
2、当curLength 不等于 子串长度时,需要将母串的指针 回至:lindex = lindex - rindex + 1;

ps:本文为自己刷题练习且参考到了题解,如有侵权,请及时联系,我会在第一时间删除!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值