2982. 找出出现至少三次的最长特殊子字符串 II

字典树思路

用字典树搞一下就好了,比如aaaaa :   a存5次 aa 4次以此类推~

字典树板子复习:P8306 【模板】字典树

这里这个清空方式 很好 因为很多时候memset   T

#include<iostream>
#include<cstring>
using namespace std;const int N = 3e6+10;
int n,m;
string s;
int tire[N][70],cnt[N],idx;void insert(){int p = 0;for(auto &t:s){int u;if(t>='a'&&t<='z')u = t-'a';else if(t>='A'&&t<='Z')u = t-'A'+ 27;else u = t -'0'+54;if(!tire[p][u]) tire[p][u]=++idx;p = tire[p][u];	cnt[p]++;}
}int query(){int p=0;for(auto &t:s){int u;if(t>='a'&&t<='z')u = t-'a';else if(t>='A'&&t<='Z')u = t-'A'+ 27;else u = t -'0'+54;if(!tire[p][u]) return 0;p = tire[p][u];}return cnt[p];
}void solve()
{cin>>n>>m;for(int i=0;i<=idx;i++)for(int j=0;j<=65;j++)tire[i][j] = 0;for(int i=0;i<=idx;i++)cnt[i] = 0;idx = 0;while(n--){cin>>s;insert();}while(m--){cin>>s;cout<<query()<<"\n";}
}int main()
{int _;cin>>_;while(_--)solve();
}

本题代码;

const int N = 5e5+10;
int tr[N][27],cnt[N],idx;
class Solution {
public:string str;void insert(){int ts = str.size();int p = 0;for(auto &t:str){int u = t - 'a';if(!tr[p][u])tr[p][u] = ++idx;p = tr[p][u];cnt[p]+=ts--;}}int find(char c){ int p = 0;int t = 0;int u = c-'a';while(cnt[tr[p][u]]>=3){t++;p = tr[p][u];}return t;}int maximumLength(string s) {for(int i=0;i<=idx;i++)for(int j=0;j<=26;j++)tr[i][j] = 0;for(int i=0;i<=idx;i++)cnt[i] = 0;idx = 0;char c = s[0];int t = 1;for(int i=1;i<s.size();i++){if(s[i]!=c){str = "";while(t--)str+=c;insert();cout<<str<<"\n";c = s[i];t = 1;}else t++;}str = "";while(t--)str+=c;insert();cout<<str<<"\n";int ans = 0;for(char i='a';i<='z';i++) ans = max(ans,find(i));if(ans)return ans;return -1;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433203.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow2实战-系列教程2:神经网络分类任务

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、Mnist数据集 下载mnist数据集&#xff1a; %matplotlib inline from pathlib imp…

蓝桥杯省赛无忧 编程13 肖恩的投球游戏

#include <iostream> #include <vector> using namespace std; int main() {int n, q;cin >> n >> q;vector<int> a(n 1);vector<int> diff(n 2, 0); // 初始化差分数组// 读取初始球数&#xff0c;构建差分数组for (int i 1; i < …

Redis 击穿、穿透、雪崩产生原因解决思路

大家都知道&#xff0c;计算机的瓶颈之一就是IO&#xff0c;为了解决内存与磁盘速度不匹配的问题&#xff0c;产生了缓存&#xff0c;将一些热点数据放在内存中&#xff0c;随用随取&#xff0c;降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是&#xff0c;无论是击穿…

IDEA 安装阿里Java编码规范插件

1.File>Settings 2.安装之后重启 开发过程中如果有不符合规范的地方&#xff0c;会自动出现提示

硬件知识(1) 手机的长焦镜头

#灵感# 手机总是配备好几个镜头&#xff0c;研究一下 目录 手机常配备的摄像头&#xff0c;及效果举例 长焦的焦距 焦距的定义和示图&#xff1a; IPC的焦距和适用场景&#xff1a; 手机常配备的摄像头&#xff0c;及效果举例 以下是小米某个手机的摄像头介绍&#xff1a…

SpringBoot中集成XXL-JOB分布式任务调度平台,轻量级、低侵入实现定时任务

场景 XXL-JOB 分布式任务调度平台XXL-JOB XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 特性&#xff1a; 1、简单&#xff1a;支持通过Web页面对任务进行CRUD操作&#xff0c;操作简单&#xff0c;一分钟上手&…

Redis 可以代替 MySQL 作为数据库吗?

文章目录 前言1.连接到Redis服务器&#xff1a;2.存储和获取数据&#xff1a;3.列表操作&#xff1a;4.有序集合操作&#xff1a;5.键过期和删除&#xff1a;a.发布和订阅消息&#xff1a;b.实现分布式锁&#xff1a;c.使用Redis实现缓存功能&#xff1a; 前言 当使用Redis作为…

GEM5 Garnet Standalone 命令行与stats.txt结果分析

简介 展示了不同的命令行与结果,作为初步的了解. 命令行 sim-cycles要大,不然没结果 ./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py –num-cpus16 –num-dirs16 –networkgarnet –topologyMesh_XY –mesh-rows4 –sim-cycles1000000 --inj-vnet…

Kafka-服务端-PartitionStateMachine

PartitionStateMachine是Controller Leader用于维护分区状态的状态机。分区的状态是通过PartitionState接口定义的&#xff0c;它有四个子类分别代表了分区四种可能的状态&#xff0c;如表所示。 分区各个PartitionState之间的转换如图所示。 下面分析各个状态之间转换时&#…

使用代码取大量2*2像素图片各通道均值,存于Excel文件中。

任务是取下图RGB各个通道的均值及标签&#xff08;R, G&#xff0c;B&#xff0c;Label&#xff09;,其中标签由图片存放的文件夹标识。由于2*2像素图片较多&#xff0c;所以将结果放置于Excel表格中&#xff0c;之后使用SVM对他们进行分类。 from PIL import Image import os …

深入浅出hdfs-hadoop基本介绍

一、Hadoop基本介绍 hadoop最开始是起源于Apache Nutch项目&#xff0c;这个是由Doug Cutting开发的开源网络搜索引擎&#xff0c;这个项目刚开始的目标是为了更好的做搜索引擎&#xff0c;后来Google 发表了三篇未来持续影响大数据领域的三架马车论文&#xff1a; Google Fil…

Unity应用在车机上启动有概率黑屏的解决方案

问题描述 最近将游戏适配到车机上&#xff08;Android系统&#xff09;&#xff0c;碰到了一个严重bug&#xff0c;启动的时候有概率会遇到黑屏&#xff0c;表现就是全黑&#xff0c;无法进入Unity的场景。 经过查看LogCat日志&#xff0c;也没有任何报错&#xff0c;也没有任…