每日一题(字符串的模式匹配问题)

本文深入探讨了字符串匹配算法,特别是针对在长字符串中查找特定子串的问题,提供了一种有效的解决方案。通过具体实例,详细解释了如何在主串中定位子串的位置,包括算法的实现过程和关键步骤。

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

在字符串中查找子串, 给定一个字符串 A, 要求在 A 中查找一个子串 B, 如主串 A=
“ababcabcacbab” , 在 A 中查找子串(模式串) B=” abcac”,找到后返回下标索引。
 

def strFind(string,subString):
    #检查参数是否合理
    if string==None and subString==None:
        print("参数不合理")
        return -1
    if len(string)<len(subString):
        print("不是子串")
        return -1
    j=0
    i=0
    while i<len(string) and j<len(subString):
        if string[i] == subString[j]:
            #如果相等,继续后面字符
             i += 1
             j += 1
        else:
            #后退回去重新比较
            i = i-j+1
            j = 0

    if j == len(subString):
        return i-len(subString)
    else:
        return -1



if __name__ == "__main__":
    str = "ababcabcacbab"
    subStr = "abcac"
    print(strFind(str,subStr))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

EmbodiedTech

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

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

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

打赏作者

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

抵扣说明:

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

余额充值