蓝桥杯 子串简写(暴力)

题目:子串简写

代码1:

cpp 复制代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>

using namespace std;

char c1,c2;
int k;
char s[100010];
int a[100010];
int b[100010];
int cnt;
int main()
{
	scanf("%d",&k);
	scanf("%s",&s);
	getchar();
	int n = strlen(s);
	scanf("%c",&c1);
	getchar();
	scanf("%c",&c2);
	int t1=0,t2=0;
//	cout<<c1<<' '<<c2<<endl;
	for(int i=0;i<n;i++){
		if(s[i] == c1){
			a[t1++] = i;
		}
		if(s[i] == c2){
			b[t2++] = i;
		}
	} 
	
	for(int i=0;i<t1;i++){
		for(int j=0;j<t2;j++){
			if(b[j] - a[i] >= k-1){
				cnt++;
			}
		}
	}
	cout<<cnt<<endl;
	return 0;
}

结果:

代码2:参考网络

cpp 复制代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>

using namespace std;

char c1,c2;
int k;
char s[1000];
int a[1000];
int b[1000];
long long cnt;
int main()
{
	scanf("%d",&k);
	scanf("%s",&s);
	getchar();
	int n = strlen(s);
	scanf("%c",&c1);
	getchar();
	scanf("%c",&c2);
	int t1=0,t2=0;
//	cout<<c1<<' '<<c2<<endl;
	for(int i=0;i<n;i++){
		if(s[i] == c1){
			a[t1++] = i;
		}
		if(s[i] == c2){
			b[t2++] = i;
		}
	} 
	
	for(int i=0;i<t1;i++){
		int temp=0;
		while(b[temp] - a[i] < k - 1 && temp < t2) temp ++;
		if(b[temp] - a[i] >= k - 1) cnt+=t2-temp;
	}
	cout<<cnt<<endl;
	return 0;
}

结果:

相关推荐
ADDDDDD_Trouvaille8 小时前
2026.2.19——OJ89-91题
c++·算法
郝学胜-神的一滴8 小时前
Effective Modern C++ 条款39:一次事件通信的优雅解决方案
开发语言·数据结构·c++·算法·多线程·并发
@atweiwei8 小时前
Rust 实现 LangChain
开发语言·算法·rust·langchain·llm·agent·rag
仰泳的熊猫8 小时前
题目1514:蓝桥杯算法提高VIP-夺宝奇兵
数据结构·c++·算法·蓝桥杯
_OP_CHEN8 小时前
【算法提高篇】(五)线段树 + 分治:解锁区间问题的终极思路,从最大子段和到复杂序列操作
数据结构·算法·蓝桥杯·线段树·c/c++·分治·acm/icpc
简佐义的博客8 小时前
120万细胞大整合(自测+公共数据):scRNA-seq 构建乳腺细胞图谱的完整思路(附生信复现资源)
人工智能·深度学习·算法·机器学习
测试工坊8 小时前
内存泄漏自动检测(中):用统计学替代"拍脑袋阈值"
算法
Wect8 小时前
LeetCode 106. 从中序与后序遍历序列构造二叉树:题解+思路拆解
前端·算法·typescript
qq_454245038 小时前
上下文驱动的 ECS:一种反应式实体组件系统扩展
数据结构·算法·c#
xiaoye-duck9 小时前
《算法题讲解指南:优选算法-双指针》--03快乐数,04盛水最多的容器
c++·算法