蓝桥杯 子串简写(暴力)

题目:子串简写

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

结果:

相关推荐
mount_myj1 小时前
敏感信息屏蔽(一)【java】
java·算法·极课堂
先做个垃圾出来………2 小时前
偏移量解释
数据结构·算法
FanXing_zl2 小时前
基于整数MCU的FOC控制定标策略深度解析
单片机·嵌入式硬件·mcu·算法·定点运算·q15
立志成为大牛的小牛2 小时前
数据结构——三十三、Dijkstra算法(王道408)
数据结构·笔记·学习·考研·算法·图论
地平线开发者3 小时前
mul 与 reduce_sum 的优化实例
算法·自动驾驶
坚持编程的菜鸟3 小时前
LeetCode每日一题——Pow(x, n)
c语言·算法·leetcode
csdn_aspnet4 小时前
分享MATLAB在数据分析与科学计算中的高效算法案例
算法·matlab·数据分析
白云千载尽4 小时前
moveit使用和机器人模型与状态--正向运动学和逆向运动学分析(四)
算法·机器人·逆运动学·moveit·正向运动学
我想吃余4 小时前
【0基础学算法】前缀和刷题日志(三):连续数组、矩阵区域和
算法·矩阵·哈希算法
2501_938773994 小时前
文档搜索引擎搜索模块迭代:从基础检索到智能语义匹配升级
人工智能·算法·搜索引擎