news 2026/6/25 20:37:20

【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/6/24 19:29:33

2、使用Qt进行快速应用程序开发

使用Qt进行快速应用程序开发 1. 简介 Qt最初是用于开发具有图形用户界面的跨平台应用程序的工具,如今已发展成为可用于构建各种类型软件的工具,包括命令行应用程序、嵌入式软件以及适用于大型工作站应用的图形用户界面。利用Qt,创建图形用户界面并围绕它构建应用程序变得十…

作者头像 李华
网站建设 2026/6/25 9:54:10

LobeChat社群运营话术生成器

LobeChat&#xff1a;构建智能社群话术引擎的技术实践 在今天的数字运营战场上&#xff0c;一个活跃的社群背后往往站着一支精疲力竭的内容团队。每天重复撰写欢迎语、回答常见问题、发布活动通知——这些看似简单的工作&#xff0c;实则消耗着大量人力成本&#xff0c;且极易因…

作者头像 李华
网站建设 2026/6/24 18:11:01

8、文件、流和 XML 处理全解析

文件、流和 XML 处理全解析 1. 跨平台文件处理难题与 Qt 解决方案 在开发跨平台应用程序时,文件处理是个复杂的问题。不同平台在文件处理的基本特性上存在差异,例如 Unix 系统使用斜杠(/)作为路径分隔符,而 Windows 平台使用反斜杠(\)。此外,还有行尾符、编码等方面的…

作者头像 李华
网站建设 2026/6/25 17:17:52

推动差异化连接落地,这家运营商的经验值得参考!

最近这几年&#xff0c;通信行业围绕“差异化连接”的讨论越来越多&#xff0c;关注热度直线上升。从本质上来说&#xff0c;差异化连接是一场针对移动通信商业模式的革命性创新。它摒弃了传统网络的“量力而为”模式&#xff0c;通过网络切片等先进技术的支撑&#xff0c;为不…

作者头像 李华
网站建设 2026/6/25 13:56:59

正式裁员30000人,赔偿N+4!

还记得今年阿里巴巴集团公布了2024年财报&#xff0c;数据显示&#xff0c;截至2024年12月31日&#xff0c;阿里的员工总数为194320人&#xff0c;而截至2023年12月31日&#xff0c;这一数字为219260人。这也意味着&#xff0c;过去一年阿里员工数减少了近24940人。这不是个例—…

作者头像 李华