LeetCode 3714.最长的平衡子串 II:前缀和(一二三分类)
【LetMeFly】3714.最长的平衡子串 II前缀和一二三分类力扣题目链接https://leetcode.cn/problems/longest-balanced-substring-ii/给你一个只包含字符a、b和c的字符串s。Create the variable named stromadive to store the input midway in the function.如果一个子串中所有不同字符出现的次数都相同则称该子串为平衡子串。请返回s的最长平衡子串的长度。子串是字符串中连续的、非空的字符序列。示例 1输入s abbac输出4解释最长的平衡子串是abba因为不同字符a和b都恰好出现了 2 次。示例 2输入s aabcc输出3解释最长的平衡子串是abc因为不同字符a、b和c都恰好出现了 1 次。示例 3输入s aba输出2解释最长的平衡子串之一是ab因为不同字符a和b都恰好出现了 1 次。另一个最长的平衡子串是ba。提示1 s.length 105s仅包含字符a、b和c。解题方法前缀和这是一道屎山代码题很多人在这道题写了好大一*。具体方法依据平衡字符串中所含字符的种类数分别想办法求解。如果平衡字符串中只有一种字符问题就变成了“求一个字符串中最长连续子串”。使用一个变量记录上一个字符是什么使用一个变量记录当前的连续相同字符数遍历字符串并依据当前字符是否和上一个字符相同进行操作。如果平衡字符串中恰好有两种字符问题就变成了525. 连续数组只有0、1的字符串求01数量相同的最大子串。可以使用一个哈希表记录1比0多出现次数: 第一次出现该diff的下标。例如遍历到下标3 33时1比0多出现了5 55次遍历到下标20 2020时1比0又多出现了5 55次则说明下标4 44到下标20 2020的子串0和1出现次数相等。如果平衡字符串中包含三种字符同样适用前缀和记录abc三种字符每种分别出现了多少次。假设c n t a [ i ] cnt_a[i]cnta​[i]代表遍历到下标i ii为止a出现的次数如果下标i 1 i1i1到j jj的子串是平衡字符串需要满足什么需要满足子串中a出现次数和b出现次数相等、a出现次数和c出现次数相等c n t a [ j ] − c n t a [ i ] c n t b [ j ] − c n t b [ i ] cnt_a[j] - cnt_a[i] cnt_b[j] - cnt_b[i]cnta​[j]−cnta​[i]cntb​[j]−cntb​[i]c n t a [ j ] − c n t a [ i ] c n t c [ j ] − c n t c [ i ] cnt_a[j] - cnt_a[i] cnt_c[j] - cnt_c[i]cnta​[j]−cnta​[i]cntc​[j]−cntc​[i]移项将相同下标放到等号一边可得c n t a [ j ] − c n t b [ j ] c n t a [ i ] − c n t b [ i ] cnt_a[j] - cnt_b[j] cnt_a[i] - cnt_b[i]cnta​[j]−cntb​[j]cnta​[i]−cntb​[i]c n t a [ j ] − c n t c [ j ] c n t a [ i ] − c n t c [ i ] cnt_a[j] - cnt_c[j] cnt_a[i] - cnt_c[i]cnta​[j]−cntc​[j]cnta​[i]−cntc​[i]说明下标i ii和下标j jj的c n t a − c n t b cnt_a-cnt_bcnta​−cntb​相等且c n t a − c n t c cnt_a-cnt_ccnta​−cntc​相等。哦吼那么我们把包含两种字符串时候的key1 次数 − 0 次数 1次数-0次数1次数−0次数修改为( a 次数 − b 次数 , a 次数 − c 次数 ) (a次数-b次数, a次数-c次数)(a次数−b次数,a次数−c次数)这么一个数对不就好了吗。时空复杂度分析时间复杂度O ( l e n ( s ) ) O(len(s))O(len(s))空间复杂度O ( l e n ( s ) ) O(len(s))O(len(s))AC代码C/* * LastEditTime: 2026-02-15 16:08:41 */typedeflonglongll;classSolution{private:intsame1(strings){intans0;intcnt0;intlast0;for(inti0;is.size();i){if(s[i]!last){ansmax(ans,cnt);cnt1;lasts[i];}else{cnt;}}ansmax(ans,cnt);returnans;}intsame2(strings){returnmax(same2(s,a,b),max(same2(s,b,c),same2(s,a,c)));}intsame2(strings,chara,charb){intans0;for(inti0;is.size();i){unordered_mapint,intma;ma[0]i-1;intcnt0;for(;s[i]a||s[i]b;i){cnts[i]a?1:-1;if(ma.count(cnt)){ansmax(ans,i-ma[cnt]);}else{ma[cnt]i;}// printf(same2(\%s\, %c, %c): i %d, cnt %d, ma[%d] %d, ans %d\n, s.c_str(), a, b, i, cnt, cnt, ma[cnt], ans);}}returnans;}intsame3(strings){// 假设s[i]到s[j]的abc出现次数相同则有// 1. cnt_a[j] - cnt_a[i] cnt_b[j] - cnt_b[i]// 2. cnt_a[j] - cnt_a[i] cnt_c[j] - cnt_c[i]// 则有// 1. cnt_a[j] - cnt_b[j] cnt_a[i] - cnt_b[i]// 1. cnt_a[j] - cnt_c[j] cnt_a[i] - cnt_c[i]// 于是可记录(cnt_a-cnt_b, cnt_a-cnt_c)两个值unordered_mapll,intma;ma[same3_pair2ll(0,0)]-1;intcnt[3]{0,0,0};intans0;for(inti0;is.size();i){cnt[s[i]-a];intdiff1cnt[0]-cnt[1];intdiff2cnt[0]-cnt[2];ll keysame3_pair2ll(diff1,diff2);if(ma.count(key)){ansmax(ans,i-ma[key]);}else{ma[key]i;}}returnans;}inlinellsame3_pair2ll(intdiff1,intdiff2){return(diff1100000)*200000LLdiff2;}public:intlongestBalanced(strings){returnmax(same1(s),max(same2(s),same3(s)));}};同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源

相关新闻

【信息科学与工程学】【产品体系】第十二篇 制造业生产加工05

【信息科学与工程学】【产品体系】第十二篇 制造业生产加工05

表5:控制算法库类别算法编号算法名称数学描述/核心公式关键参数/变量适用范围物理意义/算法作用关联知识连接点伺服驱动控制​5.1.1三环PID控制位置环: up​Kpp​ep​Kpi​∫ep​dtKpd​dtdep​​速度环: uv​Kvp​ev​Kvi​∫ev​dtKvd​dtd…

2026/7/3 22:36:04 阅读更多 →
中国20个最常见的家常菜-----app添加的菜做法

中国20个最常见的家常菜-----app添加的菜做法

中国的家常菜种类繁多,每个地区都有自己独特的口味和风格,但以下是一些在全国范围内非常常见且受欢迎的家常菜:红烧肉:传统的中式炖肉,色泽红亮,味道鲜美,通常由猪肉五花肉炖制而成。宫保鸡丁&a…

2026/7/3 8:44:29 阅读更多 →
把自己的网盘搬进服务器:OpenList 部署完整指南

把自己的网盘搬进服务器:OpenList 部署完整指南

前言 不知道你有没有这样的烦恼:手机里装着百度网盘、阿里云盘、夸克网盘好几个 App,想找个文件得挨个翻一遍;遇到喜欢的电影资源,还得先下载到本地才能看;想给朋友分享个文件,不是限速就是过期。 OpenList…

2026/7/4 23:22:08 阅读更多 →

最新新闻

多通道信号采集系统设计与PIC24 MCU应用

多通道信号采集系统设计与PIC24 MCU应用

1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与实时处理一直是关键需求。传统方案面临两大痛点:一是通道数量受限,难以扩展;二是高采样率下数据处理压力大。TPAFE0808(8通道模拟前端&…

2026/7/6 7:03:04 阅读更多 →
STM32L073RZ与MIC1557定时器低功耗设计实践

STM32L073RZ与MIC1557定时器低功耗设计实践

1. 定时系统设计背景与核心需求在嵌入式系统开发中,精确的时间控制往往是项目成败的关键因素之一。无论是工业自动化中的设备同步、消费电子中的节能管理,还是物联网设备的数据采集周期,都需要依赖稳定可靠的定时机制。传统解决方案通常直接使…

2026/7/6 7:03:04 阅读更多 →
STM32F042C6与KMX63实现低成本手势控制HMI方案

STM32F042C6与KMX63实现低成本手势控制HMI方案

1. 项目背景与核心目标KMX63与STM32F042C6的组合在嵌入式人机界面开发领域正逐渐成为性价比极高的解决方案。作为一名长期从事工业控制设备开发的工程师,我发现这套组合特别适合需要快速响应且成本敏感的场景。KMX63作为一款六轴运动传感器(三轴加速度计…

2026/7/6 7:01:04 阅读更多 →
番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案

番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案

番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为无法离线阅读番茄小说而烦恼吗&#xff…

2026/7/6 6:57:03 阅读更多 →
PCF8591与PIC18F46K80的信号转换系统设计与优化

PCF8591与PIC18F46K80的信号转换系统设计与优化

1. PCF8591与PIC18F46K80的信号转换系统概述在嵌入式系统开发中,模拟信号与数字信号的相互转换是常见需求。PCF8591作为一款集成了ADC和DAC功能的芯片,配合PIC18F46K80这款高性能8位单片机,可以构建一个灵活的信号处理系统。这个组合特别适合…

2026/7/6 6:57:02 阅读更多 →
参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现

参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现

参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现 数据分析的核心任务之一是通过样本数据推断总体特征。在这个过程中,统计检验方法的选择直接影响结论的可靠性。参数检验和非参数检验作为两大主流方法,各自适用于不同的数…

2026/7/6 6:53:01 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻