列表

详情


NC213329. K匹配

描述

牛牛是赫赫有名的字符串高手,现在牛牛发现了一种新的匹配方式。给定一个字符串和一个字符串,如果存在一个长度为的子串的某个长度为的子串相等,那么我们就认为字符串和字符串匹配的。比如字符串和字符串就是匹配的。
牛牛知道这种匹配方式之后就迫不及待的想要提出新的问题。给定一个长度为的字符串和一个长度为的字符串,现在牛牛想知道有多少个子串和是满足匹配的。
本场大样例下载

输入描述

第一行两个整数分别表示字符串的长度和字符串的长度。
第二行一个长度为的字符串表示
第三行一个长度为的字符串表示
保证字符串中只包含小写字母。

输出描述

输出一行整数表示中满足和匹配的子串个数。

示例1

输入:

10 2
abaaaababa
ab

输出:

33

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 468ms, 内存消耗: 33172K, 提交时间: 2020-10-28 14:13:38

#include<bits/stdc++.h>
using namespace std;
long long n,k,c=-1,d,q,ans;
string a,b;
int main()
{
	cin>>n>>k;cin>>a>>b;
	while(q>=0)
	{
		if(q=a.find(b,d));
			if(q==-1)break;
				ans+=(n-q-k+1)*(q-c);
				c=q;d=q+1;
	}cout<<ans<<endl;
}

上一题