剪花布条(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;
}
相关推荐
消失的旧时光-194312 天前
(KMP-Net进阶)第一篇:AppResult<T>——网络层到底应该 throw,还是返回统一 Result?
网络·ktor·kmp
消失的旧时光-194314 天前
第十篇:Ktor Custom Client Plugin:从 OkHttp Interceptor 真正理解请求与响应生命周期
okhttp·plugin·ktor·kmp
消失的旧时光-194315 天前
第八篇:Ktor 异常体系:断网、Timeout、HTTP、JSON 与业务错误如何统一成 AppError
异常处理·ktor·kmp
消失的旧时光-194315 天前
补充篇 8.1:Ktor/KMP 断网处理:为什么请求前要先判断网络状态?
ktor·kmp·networkclient
消失的旧时光-194315 天前
第七篇:Ktor 统一响应模型:ApiResponse、业务 code 与 data 解包
ktor·kmp·net
小书房1 个月前
KMP跨平台之数据库
数据库·kmp
消失的旧时光-19432 个月前
KMP Web 开发实战(二):js、wasmJs、browser、executable 到底是什么意思?
开发语言·前端·javascript·跨平台·kmp
小书房3 个月前
移动开发跨平台方案之RN/Flutter/KMP/CMP
flutter·react native·react·跨平台·rn·kmp·cmp
KillerNoBlood4 个月前
2026移动端跨平台开发面经总结
android·算法·flutter·ios·移动开发·鸿蒙·kmp
hnjzsyjyj5 个月前
东方博宜OJ 2362:前缀和后缀 ← KMP算法
kmp