LeetCode 1668:JavaScript实现最大重复子字符串解法

Leo
Leo
发布时间:2026-10-15| 6人浏览过
原创

本文针对LeetCode第1668题“最大重复子字符串”,提供基于JavaScript的高效解题方案。核心思路是利用字符串的包含关系检测,逐步构建重复序列,从而确定单词 word 在 sequence 中连续出现的最大次数 k。

题目解析与逻辑

给定两个字符串 sequence 和 word,我们需要计算 word 连续重复 k 次后形成的字符串是否仍为 sequence 的子串。目标是找出最大的 k 值。如果 word 根本不是 sequence 的子串,则结果为 0。

第1步:边界条件检查

目的:快速排除无效情况,提升执行效率。
动作:
1. 若 word 的长度大于 sequence 的长度,显然无法构成重复子串,直接返回 0。
2. 若 sequence 不包含单次出现的 word,同样无法构成重复,直接返回 0。
完成状态:通过上述两项任一检查时,程序立即终止并返回 0。

第2步:初始化迭代变量

目的:建立用于检测重复累积的基础字符串和计数器。
动作:
1. 初始化当前重复字符串 str 为 word。
2. 初始化重复计数 count 为 0。
重要参数:str.length <= sequence.length 作为循环维持条件之一(实际更严格的限制是包含关系的布尔值)。

第3步:循环检测与累加

目的:逐步增加 word 的重复次数,直到不再匹配。
入口:进入 while 循环,前提是 sequence 包含当前的 str。
具体动作:
1. 检查 sequence.includes(str) 是否为真。
2. 若为真:将 word 追加到 str 末尾(str += word),并将 count 自增 1。
3. 若为假:说明继续追加 word 会导致不匹配,此时前一次的状态即为最大重复值,直接返回 count。
可观察状态:每次循环后 str 变长,count 递增,直至 break 或 return。

var maxRepeating = function(sequence, word) {
    // 边界检查:长度超限或根本不存在
    if(word.length > sequence.length || !sequence.includes(word)) {
        return 0;
    }
    
    let str = word;     // 初始化的重复子串
    let count = 0;      // 记录重复次数
    
    // 当当前累积的 str 仍然存在于 sequence 中时继续循环
    while(str.length <= sequence.length) {
        if(sequence.includes(str)) {
            str += word; // 追加一个 word,尝试更高重复数
            count++;     // 计数加一
        } else {
            // 如果当前 str 已不在 sequence 中,说明上一次就是最大值
            return count - 1;
        }
    }
    return count;
};

关键知识点

String.includes():ES6 引入的方法,用于判断一个字符串是否包含指定的子字符串。如果包含返回 true,否则返回 false。这是本题核心的判定依据。

String.repeat():虽然本题使用字符串拼接 str += word 直观易懂,但也可以使用 str.repeat(k) 来构造重复 k 次的字符串进行验证。不过在本算法中,逐步累加比预先构造所有可能长度的字符串更高效,因为它能提前终止不匹配的情况。

以上就是JavaScript前端学算法题解LeetCode最大重复子字符串的详细内容,更多关于JavaScript算法最大重复子字符串的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。