王老头

导航

腾讯2018 算法岗在线编程题一

对于A和B两个字符串的字符串系数按照以下规则定义:

1. 对于每一个A的长度为k的不同子串,我们统计在B中的出现的次数

2. A和B的字符串系数就是所有出现次数之和

例如,A = “abab”,B=“ababab”,k=2

A有两个长度为2的不同子串“ab"和“ba”,在B中"ab"出现了3次,"ba"出现了2次,所以A和B的字符串系数为3+2=5。

现在给出两个字符串A,B和整数k,请你计算A和B的字符串系数。

输入描述

输入包括三行

第一行包括一个整数k(1<=k<=|A|)

第二行一个字符串A(1<=|A|<=100000)

第三行一个字符串B(1<=|B|<=100000)

其中|A|表示字符串A的长度。

输出描述

输出一个整数,表示A和B的字符串系数。

示例

输入

2

abab

ababab

输出

5

 

def getCount(str1,str2,num):
    if(len(str1)<num or len(str2)<num):
        return 0
    lstr1 = set()
    count = 0
    for i in range(len(str1)-num+1):
        lstr1.add(str1[i:i+num])
    for i in range(len(str2)-num+1):
        if(str2[i:i+num] in lstr1):
            count += 1
    return count

while True:
    try:
        num = int(raw_input())
        str1 = raw_input()
        str2 = raw_input()
        out = getCount(str1,str2,num)
        print(out)
    except Exception as e:
        break

 

posted on 2018-09-16 16:57  王老头  阅读(279)  评论(0)    收藏  举报