news 2026/4/15 6:43:30

【Leetcode】3008. Find Beautiful Indices in the Given Array II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Leetcode】3008. Find Beautiful Indices in the Given Array II

题目地址:

https://leetcode.com/problems/find-beautiful-indices-in-the-given-array-ii/description/

给定三个字符串s ssa aab bb,还有一个正整数k kk,求所有的i ii满足s [ i : ] s[i:]s[i:]a aa为前缀,并且s ss含有子串b bb,且b bb开始的位置(之一)和i ii的距离小于等于k kk。返回所有满足条件的i ii

先用KMP求出a aab bbs ss中出现的所有位置的下标,这样得出两个下标数组v a v_avav b v_bvb,并且它们都是单调增的。遍历v a v_ava,对于每个i ii,求出j jj使得j jj是满足v b [ j ] ≥ i − k v_b[j]\ge i-kvb[j]ik的最小的数,然后判断v b [ j ] ≤ i + k v_b[j]\le i+kvb[j]i+k是否成立。如果成立,则将i ii加入答案。注意j jj是不需要回退的。代码如下:

classSolution{public:vector<int>beautifulIndices(string s,string a,string b,intk){s=" "+s;a=" "+a;b=" "+b;autof=[](auto&s,auto&p){intm=p.size()-1,n=s.size()-1;vector<int>ne(m+1);for(inti=2,j=0;i<=m;i++){while(j&&p[i]!=p[j+1])j=ne[j];if(p[i]==p[j+1])j++;ne[i]=j;}vector<int>res;for(inti=1,j=0;i<=n;i++){while(j&&s[i]!=p[j+1])j=ne[j];if(s[i]==p[j+1])j++;if(j==m){res.push_back(i-j);j=ne[j];}}returnres;};autova=f(s,a),vb=f(s,b);intj=0;vector<int>res;for(inti:va){intl=i-k,r=i+k;while(j<vb.size()&&vb[j]<l)j++;if(j<vb.size()&&vb[j]<=r)res.push_back(i);}returnres;}};

时空复杂度O ( l s + l a + l b ) O(l_s+l_a+l_b)O(ls+la+lb)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 21:19:17

如何快速掌握vokoscreenNG:2024年最完整的屏幕录制终极指南

如何快速掌握vokoscreenNG&#xff1a;2024年最完整的屏幕录制终极指南 【免费下载链接】vokoscreenNG vokoscreenNG is a powerful screencast creator in many languages to record the screen, an area or a window (Linux only). Recording of audio from multiple sources…

作者头像 李华
网站建设 2026/4/11 17:40:09

【API 设计之道】06 结构化错误处理:RFC 7807 与错误模型的最佳实践

大家好&#xff0c;我是Tony Bai。欢迎来到我们的专栏 《API 设计之道&#xff1a;从设计模式到 Gin 工程化实现》的第六讲。在前面的课程中&#xff0c;我们讨论了如何设计 URL、如何传输数据、如何分页。今天&#xff0c;我们来聊聊一个略显沉重但绝对避不开的话题&#xff1…

作者头像 李华
网站建设 2026/4/8 17:09:10

投递 2 天,拿下 Offer!

大家好&#xff0c;我是R哥。今天分享一个史上最快拿 Offer 的案例&#xff0c;投递 2 天拿下 Offer&#xff0c;兄弟直接说&#xff1a;“回本了 我这才刚投两天&#xff01;”。&#xff08;他史上最快&#xff0c;我们辅导案例并不是最快的。&#xff09;这兄弟工作快 10 年…

作者头像 李华
网站建设 2026/4/14 20:21:50

终极Kafka-UI快速部署指南:5分钟搞定可视化监控

终极Kafka-UI快速部署指南&#xff1a;5分钟搞定可视化监控 【免费下载链接】kafka-ui provectus/kafka-ui: Kafka-UI 是一个用于管理和监控Apache Kafka集群的开源Web UI工具&#xff0c;提供诸如主题管理、消费者组查看、生产者测试等功能&#xff0c;便于对Kafka集群进行日常…

作者头像 李华
网站建设 2026/4/15 5:50:05

Python:接口隔离原则(ISP)

接口隔离原则&#xff08;Interface Segregation Principle&#xff0c;ISP&#xff09;强调&#xff1a;客户端不应该被迫依赖它不需要的方法。换句话说&#xff0c;一个接口&#xff08;或抽象类&#xff09;应该尽可能小而精&#xff0c;不应把不相关的功能塞进同一个接口里…

作者头像 李华
网站建设 2026/4/1 19:49:34

3步告别糊涂账:开源记账系统如何帮你重建财务秩序

"钱都花到哪里去了&#xff1f;"这可能是很多人月底最常问自己的问题。工资刚到手就所剩无几&#xff0c;想存钱却总是存不下来&#xff0c;想要投资理财却连自己的收支状况都搞不清楚。这种财务混乱的状况&#xff0c;正在影响越来越多人的生活品质。 【免费下载链接…

作者头像 李华