28. 实现strStr()

本文介绍了一种简单的字符串匹配算法实现,通过遍历目标字符串并逐一比较字符来查找子串的位置。文章详细展示了如何使用 Java 实现该算法,并给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提供一个不太好的思路,开始我试图用异或来计算出总的needle的结果,然后这个值和目标字符串异或,如果等于0,说明相同。但是这样不行,异或相当于一个加和结果,但是过程可能有很多组合。
所以,最终还是老老实实的,如果发现第一位相等的,

class Solution {
    public int strStr(String haystack, String needle) {
    	if(needle.length()==0){
    		return 0;
    	}
        if(haystack.length()==0||haystack.length()<needle.length()){
            return -1;
        }
        char[] nd=needle.toCharArray();
        char[] hs=haystack.toCharArray();
        char first=nd[0];
        int len=nd.length;
        for(int j=0;j<hs.length;j++){
            if(hs[j]!=first){
                continue;
            }else{
                boolean flag=true;
                if(hs.length-j<len){
                    break;
                }
                for(int k=0;k<len;k++){
                    if(nd[k]!=hs[k+j]){
                        flag=false;
                        break;
                    }
                 }
                if(flag){
                    return j;
                }
            }
        }
        return -1;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值