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;
}
目录
相关文章
|
21天前
|
人工智能 并行计算 数据可视化
ms-swift 微调 internlm3-8b-instruct(论文分类任务)
本文介绍了使用InternLM系列模型进行论文分类任务的微调全过程,包括环境配置、数据准备、预训练与SFT(监督微调)、权重合并、模型评测及上传至魔搭社区等步骤。使用ms-swift框架和Lora训练方法,在具备40GB显存的A100 GPU环境下完成训练,并通过Swift工具进行效果评估。
125 5
ms-swift 微调 internlm3-8b-instruct(论文分类任务)
|
3月前
|
自然语言处理 安全 API
MCP:让大语言模型不只是聊天,更能"动手做事"的开放协议
MCP(Model Context Protocol,模型上下文协议)是一种开放协议,旨在标准化应用程序向大语言模型提供上下文的方式。通过 MCP,大模型不仅能聊天,还能执行如查数据库、写代码等任务。相比 Function Calling,MCP 解耦了工具调用,提升灵活性和复用性,实现“一次开发,多处调用”。其架构包括 MCP Hosts、Clients、Servers,以及本地数据源和远程服务,支持安全访问多种资源。相关资源可在 GitHub 和 mcp.so 获取。
297 3
MCP:让大语言模型不只是聊天,更能"动手做事"的开放协议
|
21天前
|
机器学习/深度学习 自然语言处理 监控
ms-swift 部分命令行参数说明
本资源介绍了机器学习训练中的关键参数设置及其影响,包括训练轮数、批量大小、学习率、梯度累积、模型微调等,并提供了针对不同任务和硬件配置的推荐值,帮助提升模型训练效率与性能。
72 4
|
24天前
|
并行计算 API Python
vLLM 部署 Qwen3
本文介绍了在特定环境下安装和使用 vLLM 的步骤。环境配置包括 CUDA 12.2、40GB 显存,使用 conda 进行 Python 包管理,并基于 Qwen3-8B 模型。首先通过创建 conda 环境并安装 vLLM 实现部署,接着启动 API 服务以支持对话功能。文中提供了 curl 和 Python 两种调用方式示例,方便用户测试与集成。
761 1
|
2月前
|
人工智能 自然语言处理 数据库
RAG 是什么?一文带你看懂 AI 的“外挂知识库”
RAG(检索增强生成)是一种结合信息检索与文本生成的技术,通过“先查资料后回答”机制解决传统模型知识更新滞后及幻觉问题。其核心流程包括:1) 检索:从外部知识库中查找相关文本片段;2) 生成:将检索结果与用户查询输入给大语言模型生成回答。RAG利用Embedding模型将文本转为向量,通过语义匹配实现高效检索,提供更准确、实时的回答。
738 19
RAG 是什么?一文带你看懂 AI 的“外挂知识库”
|
2月前
|
存储 人工智能
Ollama 本地运行 Qwen 3
本指南介绍如何安装和配置Ollama。首先,从官网下载Ollama并选择适合的安装方式:傻瓜式安装或指定路径安装。安装完成后,可通过系统环境变量配置模型下载路径(可选)。最后,运行对应模型命令进行测试使用,包括选择参数量、复制命令并在命令行工具中执行,验证安装是否成功。
958 18
|
1月前
|
存储 Ubuntu Docker
Ubuntu 安装 docker
本文介绍了在 Ubuntu 系统上安装 Docker 的详细步骤,包括卸载旧版本、设置 Docker 官方存储库、安装 Docker 包以及配置镜像源加速。首先通过移除旧版组件如 `docker.io` 和 `docker-compose` 等进行清理,然后添加官方 GPG 密钥并配置 APT 源,接着安装最新 Docker 组件。此外,还提供了阿里云和 1Panel 的镜像源配置方法以提升下载速度,并通过运行 `hello-world` 镜像测试安装是否成功。
822 3
Ubuntu 安装 docker
|
3月前
|
Serverless API
【MCP教程系列】在阿里云百炼,实现超级简单的MCP服务部署
阿里云百炼推出业界首个全生命周期MCP服务,支持一键在线注册托管。企业可将自研或外部MCP服务部署于阿里云百炼平台,借助FC函数计算能力,免去资源购买与服务部署的复杂流程,快速实现开发。创建MCP服务仅需四步,平台提供预置服务与自定义部署选项,如通过npx安装代码配置Flomo等服务。还可直接在控制台开通预置服务,体验高效便捷的企业级解决方案。
【MCP教程系列】在阿里云百炼,实现超级简单的MCP服务部署
|
24天前
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。