C++最大重复字符串

2601_95829908 2026-04-29 22:51:03

1. 先确定 k 的理论上限: max_possible = sequence.size() / word.size() ,因为 k 次重复的总长度不能超过 sequence 的长度。

2. 从最大可能的 k 开始向下遍历,每次构造 word 重复 k 次的字符串,检查它是否是 sequence 的子串。

3. 第一个满足条件的 k 就是答案;如果遍历到 k=1 都不满足,返回 0 。

如果追求更优的时间复杂度,可以用动态规划:
定义 dp[i] 表示以 sequence[i-1] 结尾的最大重复次数。
 
当 i >= m 且 sequence.substr(i-m, m) == word 时, dp[i] = dp[i-m] + 1 ;

否则 dp[i] = 0 。
最终取 dp 数组的最大值即可,时间复杂度优化到O(n \cdot m),空间复杂度O(n)(可进一步优化为O(1))。

 

...全文
27 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

151

社区成员

发帖
与我相关
我的任务
社区描述
这里专为新疆政法学院的探索者而建,英雄不问出处。起跑线是起点,热忱与坚持为加速器,无论bug缠身的项目,还是攻克的算法顿悟,每滴汗水皆被珍藏。执炬前行,终将照亮彼此峰顶,我们携手同行。
课程设计笔记经验分享 高校 新疆·图木舒克市
社区管理员
  • 雲中203
  • SHAO060706
  • 三叶草.
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

英雄不问出处

试试用AI创作助手写篇文章吧