leetcode 28.Implement strStr()

本文深入探讨了如何利用双指针技术解决字符串匹配问题,通过实例代码展示实现过程,并分析其运行效率。此外,文章还提出了一些优化策略和未来可能的改进方向。

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

这个题用双指针,一个来找第一个相同的位置,一个是用来做比较的次数(用needle的长度)就可以来进行判断了。战胜20%

class Solution {

    /**
     * 字符串是否出现
    */
public:
    int strStr(string haystack, string needle) {
        int hsSize=haystack.size();
        int nSize=needle.size();
        if(hsSize<nSize){
            return -1;
        }else if(nSize==0){ return 0;}
        //定义两个指针
        //针的第一个字母,在海中比较,找到第一个相同的元素,此时利用j指针来比较两个串剩下的元素是否相同,
       
       
       
            for(int l=0;l<haystack.size();l++){
                if(haystack[l]==needle[0]){
                    if(haystack.size()-l<nSize) return -1;
                    int i=1;
                    if(i==nSize) return l;
                    while(haystack[l+i]==needle[i]){
                        if(i<nSize-1)
                           {
                              
                               i++;
                              
                           }
                        else return l;
                        
                    }
                
            }
        }
        return -1; 
    }

};

当然   这一句代码也可以使用,return haystack.find(needle); 运行效率还是20%

有个疑问,这些更厉害的算法都在哪里?网上没啥资源呀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值