news 2026/7/14 5:31:54

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

作者头像

张小明

前端开发工程师

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/13 6:04:36

2025年三大AI模型实战对比:选型指南与部署策略

2025年三大AI模型实战对比:选型指南与部署策略 【免费下载链接】GLM-Z1-9B-0414 项目地址: https://ai.gitcode.com/zai-org/GLM-Z1-9B-0414 随着人工智能技术进入深度应用阶段,2025年的开源大语言模型市场呈现出技术路线多元化、部署方案精细化…

作者头像 李华
网站建设 2026/7/15 2:34:35

Aeron高性能消息传输架构深度解析与实战应用

Aeron高性能消息传输架构深度解析与实战应用 【免费下载链接】aeron Efficient reliable UDP unicast, UDP multicast, and IPC message transport 项目地址: https://gitcode.com/gh_mirrors/ae/aeron 在现代分布式系统架构中,消息传输的性能瓶颈往往成为系…

作者头像 李华
网站建设 2026/7/15 0:22:51

42、声誉与安全:电子交易中的关键要素

声誉与安全:电子交易中的关键要素 声誉系统相关内容 在电子交易中,声誉是促进公平交易的微妙而重要的部分。为了准确评估声誉,我们不能仅仅依赖交易积累的反馈,还需要外部可靠的数据参考或基准来源。一种解决方案是允许域配置指定基准来源,声誉服务器会赋予这些来源较高…

作者头像 李华
网站建设 2026/7/13 14:01:53

现代光学基础PDF下载:钟锡华2003年北大版完整指南

📚 资源概览 【免费下载链接】现代光学基础钟锡华2003年北大版PDF下载 现代光学基础(钟锡华,2003年,北大版)PDF 下载 项目地址: https://gitcode.com/open-source-toolkit/6c39f 《现代光学基础》是光学领域的权…

作者头像 李华
网站建设 2026/7/13 14:02:37

探索:在微软工作是一种怎样的体验(四)

Q:微软的面试流程是什么样的?技术面试主要考察哪些方向?在疫情期间,微软实行远程线上面试,面试前会提前预约时间,4 - 5 轮技术面试会尽量排在同一天,面试内容主要包括算法和数据结构&#xff0c…

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

15分钟快速上手:vLLM基准测试套件深度实战指南

15分钟快速上手:vLLM基准测试套件深度实战指南 【免费下载链接】vllm A high-throughput and memory-efficient inference and serving engine for LLMs 项目地址: https://gitcode.com/GitHub_Trending/vl/vllm 在大语言模型(LLM)生产…

作者头像 李华