腾讯

  • 不定项 25,编程 3

Index

字符串系数

暴力 KMP(70%)

def get_nxt(T):
    n = len(T)
    nxt = [0] * n
    max_len = 0

    for i in range(1, n):
        while max_len > 0 and T[max_len] != T[i]:
            max_len = nxt[max_len - 1]
        if T[i] == T[max_len]:
            max_len += 1
        nxt[i] = max_len

    return nxt


def kmp(S, T):
    pos = []
    nxt = get_nxt(T)

    cnt = 0
    for i in range(len(S)):
        while cnt > 0 and T[cnt] != S[i]:
            cnt = nxt[cnt - 1]

        if T[cnt] == S[i]:
            cnt += 1
        if cnt == len(T):
            pos.append(i - len(T) + 1)
            cnt = nxt[cnt - 1]
    return pos


k = int(input())
A = input()
B = input()

res = dict()
for i in range(len(A) - k + 1):
    p = A[i: i + k]
    # print(p)
    if p not in res:
        res[p] = len(kmp(B, p))

print(sum(res.values()))

暴力-使用C++库函数(AC)

腾讯-计算机视觉笔试题 acarrow-up-right笔经面经牛客网

```C++ size_t str_count(const string& S, const string& T) {

}

int main() { int k = 2; //cin >> k; string A{"abab"}; //cin >> A; string B{"ababab"}; //cin >> B;

}

三元组

Python(50%)

C++(60%)

最后更新于

这有帮助吗?