b_bd_字符串匹配(双层循环双指针)

现在考虑所有可能的字符串B,有多少种可以在字符串A中完成匹配。
A = "00010001", B = "??"
字符串B可能的字符串是"00","01","10","11",只有"11"没有出现在字符串A中,所以输出3

思路:暴力枚举A的每一个长度为m的子串,然后检查是否能匹配B

def solve(A,B):
    n,m,ans=len(A),len(B),0
    C={"/"}
    for i in range(n-m+1):
        c,s=0,A[i:i+m]
        for j in range(m):
            if s[j]==B[j] or B[j]=='?': c+=1
            else: break
        if c==m: C.add(s)
    return len(C)-1
print(solve(input(),input()))
原文地址:https://www.cnblogs.com/wdt1/p/14187603.html