154.找出出现至少三次的最长特殊字符串|(力扣)

news2024/11/13 13:13:59

代码解决

class Solution {
public:
    int maximumLength(string s) {
        // 使用unordered_map来存储每个连续子串出现的次数
        unordered_map<string, int> mp;
        string key;  // 存储当前的连续子串
        int ans = -1;  // 存储最终的答案,如果没有符合条件的子串,返回-1
        
        // 遍历字符串s的每一个字符,作为连续子串的起始点
        for (int i = 0; i < s.size(); i++) {
            // 从起始点i开始,寻找最长的连续子串
            for (int j = i; j < s.size(); j++) {
                // 如果当前字符和起始点字符不相同,则结束当前连续子串的查找
                if (s[j] != s[i]) break;
                // 从起始点i到当前位置j形成的连续子串
                key = s.substr(i, j - i + 1);
                // 更新子串出现的次数
                mp[key]++;
                // 如果当前子串出现的次数大于等于3次,则更新最大长度
                if (mp[key] >= 3) {
                    ans = max(ans, (int)key.size());
                }
            }
        }
        return ans;
    }
};

具体步骤

  1. 初始化变量:

    • unordered_map<string, int> mp: 用于存储每个连续子串出现的次数。
    • string key: 存储当前的连续子串。
    • int ans = -1: 初始化答案为 -1,如果没有符合条件的子串,最终会返回 -1。
  2. 双重循环遍历字符串:

    • 外层循环遍历字符串的每个字符 s[i],作为连续子串的起始点。
    • 内层循环从 i 开始,向右寻找最长的连续子串,直到遇到与起始点字符 s[i] 不同的字符。
  3. 处理当前连续子串:

    • key = s.substr(i, j - i + 1): 从 ij 位置形成的子串。
    • mp[key]++: 更新子串 key 出现的次数。
    • 如果当前子串出现的次数大于等于3次,则更新最大长度 ans
  4. 返回结果:

    • 返回最长符合条件的连续子串的长度 ans,如果没有符合条件的子串,则返回 -1。

举例说明

例如,字符串 s = "aaabaaa"

  • 外层循环从 i = 0 开始。
  • 内层循环从 j = 0 开始,找到连续子串 "a","aa","aaa"。
    • "a" 出现 3 次,但长度为 1。
    • "aa" 出现 2 次,不符合条件。
    • "aaa" 出现 2 次,不符合条件。

最终,最长符合条件的子串是 "a",长度为 1,返回 1。

substr 函数

作用

substr 函数用于从字符串中提取子串。

std::string substr(size_t pos = 0, size_t len = npos) const;
参数
  • pos:子串开始的位置,默认为 0。
  • len:子串的长度,默认为 npos,表示直到字符串的末尾。
返回值

返回从 pos 开始的长度为 len 的子串。如果 pos 超出字符串长度,则抛出 std::out_of_range 异常。

示例

std::string str = "Hello, world!";
std::string sub = str.substr(7, 5); // sub 将是 "world"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1715261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云计算OpenStack基础

1.什么是虚拟化&#xff1f; •虚拟化是云计算的基础。 •虚拟化是指计算元件在虚拟的而不是真实的硬件基础上运行。 •虚拟化将物理资源转变为具有可管理性的逻辑资源&#xff0c;以消除物理结构之间的隔离&#xff0c;将物理资源融为一个整体。虚拟化是一种简化管理和优化…

创新案例 | 持续增长,好孩子集团的全球化品牌矩阵战略与客户中心设计哲学

探索好孩子集团如何通过创新设计的全球化品牌矩阵和以客户为中心的产品策略&#xff0c;在竞争激烈的母婴市场中实现持续增长。深入了解其品牌价值观、市场定位策略以及如何满足新一代父母的需求。本文旨在为中高级职场人士、创业家及创新精英提供深度见解&#xff0c;帮助他们…

展锐UIS7885+android13代码目录

文章目录 bsp目录1. bootloader1.1 chipram1.2 lk1.1 平台启动初始化代码目录1.2 命令实现、下载和启动等相关代码 2. kernel目录(如kernel5.4)2.1 设备树目录2.2 内核配置文件 bsp目录 1. bootloader 1.1 chipram 说明目录展锐芯片arch\arm\include arch\arm\cpu\armv8驱动…

(函数)实现3*3数组行列转换(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明转换函数&#xff1b; void interchange(int a[3][3], int b[3][3]);int main() {//初始化变量值&#xff1b;int a[3][3] { {1, 2, 3}, {4, 5, 6}, {7, …

Java培训后找不到工作,现在去培训嵌入式可行吗?

最近java 工作还是比较好找&#xff0c;不知道你是对薪资要求太高&#xff0c;还是因为其他原因&#xff0c;如果你真的面试了很多都还找不到工作&#xff0c;那么一定要知道找不到工作的原因是啥&#xff0c;一定不是因为java 太卷&#xff0c;你说那个行业&#xff0c;那个职…

SpringBootWeb 篇-深入了解会话技术与会话跟踪三种技术(Cookie 会话跟踪、Session 会话跟踪与 JWT 令牌会话跟踪)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 会话技术 2.0 会话跟踪 2.1 会话跟踪 - Cookie 2.1.1 客户端获取 Cookie 的流程 2.1.2 Cookie 会话跟踪的特点 2.2 会话跟踪 - Session 2.2.1 客户端获取 SESSION…

【LeetCode算法】第94题:二叉树的中序遍历

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;二叉树的中序遍历。访问二叉树的左子树&#xff0c;再访问二叉树的根节点&#xff0c;最后访问二叉树的右叉树。 2. 代码&#xff1a; void order(struct TreeNode* r…

mac m1安装homebrew管理工具(brew命令)完整流程

背景 因为mac上的brew很久没用了&#xff0c;版本非常旧&#xff0c;随着mac os的更新&#xff0c;本机的homebrew大部分的功能都无法使用&#xff0c;幸好过去通过brew安装的工具比较少&#xff0c;于是决定重新安装一遍brew。 卸载旧版brew 法一&#xff1a;通过使用线上…

[C#]使用C#部署yolov8-seg的实例分割的tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll&#xff0c;TensorRtExtern源码地址&#xff1a;TensorRT-CShar…

使用docker安装nacos单机部署

话不多说,直接进入主题 1.查看nacos镜像 docker search nacos 一般选第一个也就是starts最高的。 2.拉取nacos镜像 docker pull nacos/nacos-serverdocker pull nacos/nacos-server:1.4.1 由于我使用的项目alibabacloud版本对应的是nacos1.4.1版本的,所以我安装的是1.4.1…

探索AES对称加密:Python代码实战

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;从非对称到对称 二、AES加密机制概述 三、Python实现AES加密与解密 …

【busybox记录】【shell指令】mkdir

目录 内容来源&#xff1a; 【GUN】【mkdir】指令介绍 【busybox】【mkdir】指令介绍 【linux】【mkdir】指令介绍 使用示例&#xff1a; 创建文件夹 - 默认 创建文件夹 - 创建的同时指定文件权限 创建文件夹 - 指定多级文件路径&#xff0c;如果路径不存在&#xff0c…

Slurm集群使用基础

Introduction 我们在做生物信息分析时&#xff0c;对于大规模的上游数据的处理&#xff0c;一般需要在大型服务器或集群上进行。我最早接触并使用的是一个基于SLURM调度系统的集群&#xff0c;在此记录一下基础使用方法。 高性能计算集群&#xff08;High-Performance Comput…

【408真题】2009-28

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

【2.文件和目录相关(下)】

一、查看文件内容命令 1、cat 文件名&#xff1a;用于显示文件内容&#xff0c;比如 cat test.c。 &#xff08;1&#xff09;cat -b test.c 表示加行号显示文件内容。 &#xff08;2&#xff09;cat -s test.c 表示多个空行合并成一个空行显示。 2、nl 文件名&#xff1a;…

Vue:实例生命周期钩子

一、简介 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如&#xff0c;需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数&#xff0c;这给了用户在不同阶段添加自己的代码的机会。 …

web练习

[CISCN 2022 初赛]ezpop ThinkPHP V6.0.12LTS 反序列化漏洞 漏洞分析 ThinkPHP6.0.12LTS反序列漏洞分析 - FreeBuf网络安全行业门户 解题过程 ThinkPHP V6.0.12LTS反序列化的链子可以找到&#xff0c;找到反序列化的入口就行 反序列化的入口在index.php/index/test 链子 …

外汇天眼:PayPoint投资100万英镑,深化与Aperidata开放银行合作

PayPoint今日宣布对Aperidata Ltd进行100万英镑的投资&#xff0c;Aperidata是一家创新的消费者和商业信用报告及开放银行平台。 此交易将使PayPoint集团在两家公司之间现有的商业合作基础上更进一步&#xff0c;为包括政府、地方当局、慈善机构和住房协会在内的多个领域的客户…

OpenAI 文生图模型演进:DDPM、IDDPM、ADM、GLIDE、DALL-E 2、DALL-E 3

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

使用screw-core生成数据库结构说明文档

官方项目地址&#xff1a; screw: 简洁好用的数据库表结构文档工具&#xff0c;支持MySQL/MariaDB/SqlServer/Oracle/PostgreSQL/TIDB/CacheDB 数据库。 数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB&#xff08;2016&#xff09; H2 &#xff08;开发…