蓝桥杯 子串简写(暴力)

题目:子串简写

代码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;
}

结果:

相关推荐
AndrewHZ10 小时前
【LLM技术全景】RAG 从原理到实战——检索增强生成完整指南
人工智能·深度学习·算法·llm·检索增强·生成式模型·rag
LuminousCPP10 小时前
单链表专题(三)-刷题复盘篇:从快慢指针到环形链表 II 数学推导
数据结构·经验分享·笔记·学习·算法·链表
-dzk-10 小时前
【贪心算法】LC 121.买卖股票的最佳时机
算法·贪心算法
hanlin0310 小时前
动态规划专练:力扣第718、1143题
算法·leetcode·动态规划
ChaoZiLL10 小时前
二叉树经典例题
数据结构·算法
不正经学生10 小时前
C语言字符串函数进阶:安全版函数 + 错误处理 + 子串查找
c语言·开发语言·c++·算法·面试
三克的油10 小时前
算法基础-1
数据结构·c++·算法
oort12310 小时前
OortCodex 是奥尔特云 OortCloudSmart 推出的国产化工程化 AI 编码 Agent(奥尔特云编码智能体)
大数据·人工智能·算法
TheBestRucy10 小时前
基于Dify的旅游攻略&王者荣耀攻略智能助手项目
服务器·开发语言·人工智能·python·算法·旅游
你想知道什么?10 小时前
朴素贝叶斯算法-学习笔记
笔记·学习·算法