news 2026/7/28 21:28:58

经典算法题详解之统计重复个数(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
经典算法题详解之统计重复个数(二)

​解决方案

思路

由于题目中的 n1 和 n2 都很大,因此我们无法真正把 S1 = [s1, n1] 和 S2 = [s2, n2] 都显式地表示出来。由于这两个字符串都是不断循环的,因此我们可以考虑找出 s2 在 S1 中出现的循环节,如果我们找到了循环节,那么我们就可以很快算出 s2 在 S1 中出现了多少次了。

有些读者可能对循环节这个概念会有些陌生,这个概念我们可以类比无限循环小数,如果从小数部分的某一位起向右进行到某一位止的一节数字「循环」出现,首尾衔接,称这种小数为「无限循环小数」,这一节数字称为「无限循环小数」。比如对于 3.56789789789... 这个无限循环小数,它的小数部分就是以 789 为一个「循环节」在无限循环,且开头可能会有部分不循环的部分,这个数字中即为 56。

那么回到这题,我们可以将不断循环的 s2 组成的字符串类比作上面小数部分,去找是否存在一个子串,即「循环节」,满足不断在 S2 中循环,且这个循环节能对应固定数量的 s1 。如下图所示,在第一次出现后,S2 的子串 bdadc 构成一个循环节:之后 bdadc 的每次出现都需要有相应的两段 s1。

当我们找出循环节后,我们即可知道一个循环节内包含 s1 的数量,以及在循环节出现前的 s1 的数量,这样就可以在 O(1) 的时间内,通过简单的运算求出 s2 在 S1 中出现的次数了。当然,由于 S1 中 s1 的数量 n1 是有限的,因此可能会存在循环节最后一个部分没有完全匹配,如上图最后会单独剩一个 s1 出来无法完全匹配完循环节,这部分我们需要单独拿出来遍历处理统计。

有些读者可能会怀疑循环节是否一定存在,这里我们给出的答案是肯定的,根据鸽笼原理,我们最多只要找过 |s2| + 1 个 s1,就一定会出现循环节。

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

5分钟掌握NeuTTS Air:嵌入式设备语音克隆终极指南

5分钟掌握NeuTTS Air:嵌入式设备语音克隆终极指南 【免费下载链接】neutts-air 项目地址: https://ai.gitcode.com/hf_mirrors/neuphonic/neutts-air NeuTTS Air是一个革命性的语音基础模型,能够在CPU上实时运行,实现即时语音克隆。这…

作者头像 李华
网站建设 2026/7/28 8:55:50

3个关键步骤解决Waymo E2E数据集时序数据访问难题

3个关键步骤解决Waymo E2E数据集时序数据访问难题 【免费下载链接】waymo-open-dataset Waymo Open Dataset 项目地址: https://gitcode.com/gh_mirrors/wa/waymo-open-dataset 如果你正在使用Waymo E2E数据集进行自动驾驶研究,很可能遇到过这样的困境&#…

作者头像 李华
网站建设 2026/7/22 9:16:30

14、深入解析 Apache 服务器安全、功能与故障排查

深入解析 Apache 服务器安全、功能与故障排查 1. MD5 校验与文件修改 目前,还没有人知道如何在不改变文件 MD5 校验和的情况下修改文件。研究人员仍在不断尝试,朝着破解 MD5 的最终目标取得了一些进展,但对于大多数用途来说,MD5 仍然足够强大。 2. Apache 密码认证 Apa…

作者头像 李华
网站建设 2026/7/29 9:14:22

15、深入探索Gnutella网络:问题、优化与政策考量

深入探索Gnutella网络:问题、优化与政策考量 1. Gnutella网络的发展与主机缓存问题 Gnutella网络早期发展较为平稳,用户数量从几百增长到几千,再到几十万,网络都能正常运行。然而,主机缓存的广泛使用带来了真正的问题。 在Gnutella早期,用户通过口口相传、IRC询问或查…

作者头像 李华
网站建设 2026/7/25 18:37:16

2025年厦门市小学生信息学竞赛C++(初赛)真题-附答案

2025年厦门市小学生信息学竞赛C(初赛)真题题目总数:34 总分数:100单项选择题第 1 题 单选题DeepSeek是一家专注于通用人工智能(AGI)与大型语言模型(LLM)的创新型科技公司,其创始人和首席执行官为梁文锋&#xff…

作者头像 李华
网站建设 2026/7/27 14:16:57

5步打造智能新闻收集助手:基于Agently框架的自动化解决方案

5步打造智能新闻收集助手:基于Agently框架的自动化解决方案 【免费下载链接】Agently-Daily-News-Collector An open-source LLM based automatically daily news collecting workflow showcase powered by Agently AI application development framework. 项目地…

作者头像 李华