news 2026/7/6 22:21: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/7 16:14:46

13、Apache服务器安全配置与管理全解析

Apache服务器安全配置与管理全解析 1. 安全基础 网站访客的访问权限与运行服务器进程的用户ID相似。合理配置时,该用户ID在机器上的操作权限有限,确保系统安全就需将其访问范围严格限制在极小的区间内。 需要注意的是,虽无root权限的用户也能启动Apache,但Apache进程无法…

作者头像 李华
网站建设 2026/7/7 12:28:27

16、Apache服务器配置与应用全解析

Apache服务器配置与应用全解析 在Web服务器的搭建与管理中,Apache是一款被广泛使用的开源软件。它功能强大且具有很高的可定制性,能满足各种不同的需求。下面将详细介绍Apache的一些常见配置任务、脚本创建以及与其他组件的协同工作。 1. 配置Apache执行常见任务 在进行Ap…

作者头像 李华
网站建设 2026/7/7 10:56:18

18、Apache服务器性能测试与配置指南

Apache服务器性能测试与配置指南 基础问题与解答 在使用Apache服务器时,我们常常会遇到一些基础问题,以下是相关解答: 1. 重启服务器时如何操作 :若要在重启Apache服务器前拒绝所有新请求并完成所有待处理请求,可使用 apachectl graceful 选项。 2. ab工具的默认…

作者头像 李华
网站建设 2026/7/7 13:48:19

33、对等网络系统的问责机制与相关问题探讨

对等网络系统的问责机制与相关问题探讨 1. 对等网络系统的不同模型 对等网络系统有多种不同的模型,随着系统变得更加动态且与现实世界的身份概念相背离,实现问责和防范资源攻击变得愈发困难。以下是几种常见的对等网络系统模型: - 简单静态对等网络系统 : - 特点 :…

作者头像 李华
网站建设 2026/7/7 8:11:25

Mongoose分页插件终极指南:从入门到精通

Mongoose分页插件终极指南:从入门到精通 【免费下载链接】mongoose-paginate Mongoose.js (Node.js & MongoDB) Document Query Pagination 项目地址: https://gitcode.com/gh_mirrors/mo/mongoose-paginate 在处理MongoDB海量数据时,你是否经…

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

终极指南:Tendermint完整容错机制与安全防护方案

终极指南:Tendermint完整容错机制与安全防护方案 【免费下载链接】tendermint ⟁ Tendermint Core (BFT Consensus) in Go 项目地址: https://gitcode.com/gh_mirrors/te/tendermint Tendermint作为业界领先的拜占庭容错共识引擎,为区块链网络提供…

作者头像 李华