1668. 最大重复子字符串

简介: 本题要求从字符串 `sequence` 中查找是否存在子串等于 `word`,若存在则返回其最大连续重复次数,否则返回 0。思路是遍历 `sequence`,逐个字符匹配 `word` 的起始位置,若匹配成功则继续判断后续字符是否完整匹配 `word`,并统计连续重复次数。最终取所有匹配中的最大值作为结果。

链接:https://leetcode.cn/problems/maximum-repeating-substring/

题目

大致的意思就是从 sequence 中是否出现一个子串等于 word的,如果没有输出 0,如果有,输出他连续最大重复的数量

比如:

  • sequence = "ababc",word = "d",返回 0,因为 sequence  没有子串等于 "d"
  • sequence = "abadbc",word = "ab",返回 1,因为sequence  出现子串 "ab",最大连续重复次数为 1
  • sequence = "ababc",word = "ab",返回 2,因为sequence  出现子串 "abab",最大连续重复次数为 2

思路

最简单的方法就是将 sequence  进行遍历,与 word 的第一个字符先进行匹配,如果符合就对接下来的字符与 word继续匹配,如果不符合就继续遍历 sequence

代码

/**
 * 0 ms 击败 100.00% 消耗内存分布 40.83 MB 击败 92.31%
 */
public int maxRepeating(String sequence, String word) {
    // 将 sequence 转换为 char 数组
    char[] sequenceArray = sequence.toCharArray();
    // 将 word 转换为 char 数组
    char[] wordArray = word.toCharArray();
    // 初始化计数器
    int maxCount = 0;
    // 遍历 sequence 数组
    for (int i = 0; i < sequenceArray.length; i++) {
        // 判断 sequenceArray[i] 是否与 wordArray[0] 相等
        if (sequenceArray[i] == wordArray[0]){
            // 用来保存局部的计数
            int count = 0;
            // 用来保存遍历的开始坐标
            int sequenceArrayIndex = i;
            while (true) {
                // 判断 sequenceArray 从 sequenceArrayIndex 开始的字符数组 与 wordArray 是否匹配
                boolean flag = process(sequenceArray, wordArray, sequenceArrayIndex);
                // 说明从 sequenceArrayIndex 开始的字符数组 与 wordArray 不匹配
                if (!flag) {
                    break;
                }
                // 如果匹配,说明已经遍历完整个 wordArray,然后进行再次匹配
                sequenceArrayIndex = sequenceArrayIndex + wordArray.length;
                count++;
            }
            // 取最大计数
            maxCount = Math.max(maxCount, count);
        }
    }
    return maxCount;
}
/**
 * 判断从 sequenceIndex下标 开始对 sequenceArray 以及 wordArray 进行匹配,是否满足
 *  sequenceIndex 开始的 wordArray 长度的字符 与 wordArray 完全匹配
 * @param sequenceArray sequence 的字符数组
 * @param wordArray word 的字符数组
 * @param sequenceIndex sequenceArray 开始的下标
 * @return true 表示完全匹配,false 表示不匹配
 */
public boolean process(char[] sequenceArray, char[] wordArray, int sequenceIndex) {
    int wordIndex = 0;
    // 循环直到 wordArray 遍历完成
    while (wordIndex < wordArray.length) {
        // false 条件:sequenceArray 遍历完成  或者  sequenceArray 和 wordArray 的字符对应不上
        if (sequenceIndex >= sequenceArray.length || sequenceArray[sequenceIndex++] != wordArray[wordIndex++]){
            return false;
        }
    }
    return true;
}
目录
相关文章
|
7月前
|
人工智能 并行计算 数据可视化
ms-swift 微调 internlm3-8b-instruct(论文分类任务)
本文介绍了使用InternLM系列模型进行论文分类任务的微调全过程,包括环境配置、数据准备、预训练与SFT(监督微调)、权重合并、模型评测及上传至魔搭社区等步骤。使用ms-swift框架和Lora训练方法,在具备40GB显存的A100 GPU环境下完成训练,并通过Swift工具进行效果评估。
828 5
ms-swift 微调 internlm3-8b-instruct(论文分类任务)
|
easyexcel
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
|
Java Maven
【笔记04】下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)
下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)
6790 1
【笔记04】下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)
|
4月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
426 12
docker 部署 sftp
|
8月前
|
人工智能 文件存储 数据中心
Ollama部署本地大模型并通过Infortress APP远程访问保姆级教程
本文介绍如何快速上手本地大模型部署工具Ollama及AI远程访问工具Infortress。通过Ollama,开发者可轻松部署如Llama、Deepseek等主流开源模型,仅需几行命令即可完成安装与运行。结合Infortress,用户能实现对本地大模型的远程访问,支持多设备无缝对接,同时提供便捷的模型切换与知识库管理功能。Infortress更兼具NAS软件特性,成为个人AI数据中心的理想选择。
|
4月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
607 3
docker 安装 Postgres 17.6
|
8月前
|
存储 人工智能
Ollama 本地运行 Qwen 3
本指南介绍如何安装和配置Ollama。首先,从官网下载Ollama并选择适合的安装方式:傻瓜式安装或指定路径安装。安装完成后,可通过系统环境变量配置模型下载路径(可选)。最后,运行对应模型命令进行测试使用,包括选择参数量、复制命令并在命令行工具中执行,验证安装是否成功。
4119 19
|
6月前
|
人工智能 Linux Go
window 部署 coze-loop
本教程介绍了如何在 Linux 系统上安装 Go 环境、Docker 以及 Coze Loop,并配置多模型运行。内容包括安装步骤、环境变量设置、代码拉取、模型配置及服务启动等关键流程,适用于搭建本地化的 AI 模型服务环境。
682 7
window 部署 coze-loop
|
6月前
|
网络协议 Linux C++
Window 部署 coze-stdio(coze 开发平台)
本指南介绍了如何在本地环境部署 Coze Studio,包括环境配置、镜像源设置、模型配置及服务启动步骤。内容涵盖 Docker 配置、模型添加方法及常见问题解决方案,适用于 Windows 11 系统,需最低 2 核 CPU 和 4GB 内存。
2131 8
Window 部署 coze-stdio(coze 开发平台)