当前位置: 首页 > news >正文

蓝桥杯每日一题2023.9.22

4960. 子串简写 - AcWing题库

题目描述

题目分析 

原本为纯暴力但是发现会超时,可以加入前缀和,从前往后先记录一下每个位置c1出现的次数

再从前往后扫一遍,如果遇到c2就将答案加上此位置前的所有c1的个数(直接加上此位置的前缀和)

纯暴力:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans;
int main()
{
	ll k;
	string s;
	char c1, c2;
	cin >> k;
	cin >> s;
	cin >> c1 >> c2;
	ll len = s.size();
	for(ll i = 0, j = 1; i < len - 1; i ++)
	{
		if(s[i] == c1)
		{
			j = i + 1;
			while((s[j] != c2 || j - i + 1 < k) && j < len - 1)
			{
				j ++;
			}
			if(s[j] == c2 && j - i + 1 >= k)
			{
				ans ++;
				while(j < len - 1) 
				{
					j ++;
					if(s[j] == c2)
					{
						ans ++;
					}
				}
			}
		}
	}
	cout << ans;
	return 0;
}

 ac代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e5 + 10;
ll k, ans, s[N];
string c;
char c1, c2;
int main()
{
	cin >> k;
	cin >> c;
	cin >> c1 >> c2;
	ll len = c.size();
	for(int i = 0; i < len; i ++)
	{
		if(c[i] == c1)
		{
			s[i + 1] = s[i] + 1;
		}
		else s[i + 1] = s[i];
	}
	for(int i = k - 1; i < len; i ++)//注意长度至少为k
	{
		ll l = i - k + 1;
		if(c[i] == c2)ans += s[l + 1];
	}
	cout << ans;
	return 0;
}

相关文章:

  • 数据集笔记:T-drive 北京出租车轨迹数据
  • vue+express、gitee pm2部署轻量服务器
  • Swift SwiftUI 修改 List 背景颜色
  • Jetsonnano B01 笔记8:屏幕分辨率的调整
  • 【实战项目之个人博客】
  • Zookeeper集群 + Kafka集群
  • 9月24日,每日信息差
  • TCP/IP协议
  • ‘nvcc‘不是内部或外部命令,也不是可运行的程序或批处理文件
  • 虹科方案 | LIN/CAN总线汽车零部件测试方案
  • 【算法挨揍日记】day08——30. 串联所有单词的子串、76. 最小覆盖子串
  • Springboot 外部化的配置
  • OkHttp - 现代应用网络的方式
  • RFID智能档案柜助力各大银行实现RFID智能档案管理
  • ElasticSearch(二)
  • Linux系统编程——总结初识Linux(常用命令、特点、常见操作系统)
  • 外包干了2个月,技术退步明显.......
  • 如何取消显示Notepad++每行显示的CRLF符号
  • 机器学习中的分类问题:如何选择和理解性能衡量标准
  • KNN-K近邻算法(K-Nearest Neighbors)
  • 北部艳阳高照、南部下冰雹,五一长假首日上海天气很“热闹”
  • 中方拟解除对5名欧洲议会议员制裁?外交部:望中欧立法机构相向而行
  • 辽宁辽阳火灾3名伤者无生命危险
  • “光荣之城”2025上海红色文化季启动,红色主题市集亮相
  • 中国银行副行长刘进任该行党委副书记
  • 直播电商行业代表呼吁:携手并肩伸出援手助力外贸企业攻坚克难