AcWing第26场周赛 4077. k显性字符
4077. k显性字符 - AcWing题库高质量的算法题库https://www.acwing.com/problem/content/4080/
输入样例1:
abacaba
输出样例1:
2
输入样例2:
zzzzz
输出样例2:
1
输入样例3:
abcde
输出样例3:
3
要求k显性字符串, 我们可以暴力枚举每种字母与其相同的字母相邻间距的最大值
这是可以优化的,
设置一个长度为26(引射26个英文字母)的数组last[ ]用来表示上一次该字母出现的下标,
最大值就从当前字母与上次它出现的下标的差值 中取
另外需要特判开头和结尾,
若我们让该字符串下标从1开始且last[ ]初始化为0的话, 开头不必特判
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10, M = 26;
char a[N];
int ch[M], last[N];
int main()
{
scanf("%s", a+1);
int n = strlen(a+1);
for(int i = 1; i <= n; i ++)
{
int x = a[i]-'a';
ch[x] = max(ch[x], i-last[x]);
last[x] = i;
}
for(int i = 0; i < 26; i ++)
ch[i] = max(ch[i], n-last[i]+1);
int res = N;
for(int i = 0; i < 26; i ++)
res = min(res, ch[i]);
cout << res;
return 0;
}
本文来自博客园,作者:泥烟,CSDN同名, 转载请注明原文链接:https://www.cnblogs.com/Knight02/p/15799022.html
分类:
刷题(数据结构和算法)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2020-11-20 【转载】关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
2020-11-20 枚举