剪花布条(KPM模板题)

思路:套用KMP模板即可。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl '\n'
int ne[200005];
int main()
{
	IOS
	string a,b;
	while(cin >> a){
		if(a=="#") break;
		cin >> b;
		int n=a.size(),m=b.size(),cnt=0;
		a=' '+a;//主串 
		b=' '+b;//模式串 
		//套用KMP模板 
		ne[1]=0;
		for(int i=2,j=0;i<=m;i++){//求next数组 
			while(j && b[i]!=b[j+1]) j=ne[j];
			if(b[i]==b[j+1]) j++;
			ne[i]=j;
		}
		for(int i=1,j=0;i<=n;i++){
			while(j && a[i]!=b[j+1]) j=ne[j];
			if(a[i]==b[j+1]) j++;
			if(j==m) cnt++,j=0;//计数的同时,还要初始化 j,再开始向后匹配 
			//若是可以重叠的话 就将 j=0 改成 j=ne[j],再继续向后匹配
			//若是要求模式串在主串中第一次出现的位置 ,就直接输出 i-m+1 
		}
		cout << cnt << endl;
	}
	return 0;
}
相关推荐
ai安歌6 天前
开源鸿蒙平台 KMP/CMP 三方库「智感握姿」适配全流程
kmp
ai安歌6 天前
开源鸿蒙平台KMP/CMP 服务卡片三方库适配从 0 到 1 实战
kmp
消失的旧时光-19431 个月前
(KMP-Net进阶)第一篇:AppResult<T>——网络层到底应该 throw,还是返回统一 Result?
网络·ktor·kmp
消失的旧时光-19431 个月前
第十篇:Ktor Custom Client Plugin:从 OkHttp Interceptor 真正理解请求与响应生命周期
okhttp·plugin·ktor·kmp
消失的旧时光-19431 个月前
第八篇:Ktor 异常体系:断网、Timeout、HTTP、JSON 与业务错误如何统一成 AppError
异常处理·ktor·kmp
消失的旧时光-19431 个月前
补充篇 8.1:Ktor/KMP 断网处理:为什么请求前要先判断网络状态?
ktor·kmp·networkclient
消失的旧时光-19431 个月前
第七篇:Ktor 统一响应模型:ApiResponse、业务 code 与 data 解包
ktor·kmp·net
小书房2 个月前
KMP跨平台之数据库
数据库·kmp
消失的旧时光-19432 个月前
KMP Web 开发实战(二):js、wasmJs、browser、executable 到底是什么意思?
开发语言·前端·javascript·跨平台·kmp
小书房4 个月前
移动开发跨平台方案之RN/Flutter/KMP/CMP
flutter·react native·react·跨平台·rn·kmp·cmp