3144. 分割字符频率相等的最少子字符串(24.8.28)

题目

题目
给你一个字符串 s ,你需要将它分割成一个或者更多的平衡子字符串。 比方说,s == "ababcc" 那么 ("abab","c","c")("ab","abc","c")("ababcc") 都是合法分割,但是 ("a","bab","cc")("aba","bc","c")("ab","abc") 不是,不平衡的子字符串用粗体表示。

请你返回 s 最少能分割成多少个平衡子字符串。

注意:一个平衡字符串指的是字符串中所有字符出现的次数都相同。

示例 1
输入:s = "fabccddg"
输出:3
解释:
我们可以将 s 分割成 3 个子字符串:("fab","ccdd","g") 或者 ("fabc","cd","dg")

示例 2
输入:s = "abababaccddb"
输出:2
解释:
题目
我们可以将 s 分割成 2 个子字符串:("abab","abaccddb")

提示:

  • 1<=s.length<=1000
  • s 只包含小写英文字母。

解题思路

见代码

代码

/*
要求求最小的分割数,那么就要求每个字串都要达到尽可能长的长度。可以从大到小枚举其长度, 
*/
class Solution {
public:int minimumSubstringsInPartition(string s) {int n=s.size();vector<int> cnt(n);//用于记录遇到的长度//由大到小枚举 子串的长度 auto dfs = [&](auto&& dfs, int i) -> int{if(i<0) return 0;//因为长度不可能小于0int& ans=cnt[i];//将ans初始化为对应i长度的记录值if(ans) return ans;//如果此长度及路过就不在继续ans=INT_MAX;//由于是求最小值,九江ans初始化为最大的值,以便于后面的ans值的更新int h[26]{};//建立字母的哈希值进行对字母的统计,用于判断是否满足平衡的概念int k=0;//统计不同字符的个数int max_h=0;//最大的字符个数//从第 i 小标开始向前查看这个子串是否满足for(int j=i;j>=0;j--){k+=(h[s[j]-'a']++==0);//统计不同字符的个数max_h = max(max_h, h[s[j] - 'a']);//最大的字符个数//子集当中字符个数(暂写为 a) i - j + 1//假设其是平衡的 那么其个数是(暂写为 b) k * max_h//如果 a==b 则说明满足条件,那么将ans更新为最小值if (i - j + 1 == k * max_h){ans=min(ans,dfs(dfs,j-1)+1);//再去深搜下一个长度是否满足 再加上此子集的个数 1}}return ans;};return dfs(dfs,n-1);}
};

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

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

相关文章

数学建模比赛(国赛)水奖攻略

之前很多同学私聊问我&#xff0c;学校要求参加数模比赛&#xff0c;但是不擅长建模编程&#xff0c;但又不想浪费这个时间该怎么办呢&#xff0c;今天就来给大家讲一下大家都非常感兴趣的内容——数学建模水奖攻略。分享一下博主直接参加比赛时候的经验。 一、选题技巧 有一句…

HarmonyOs如何获取rawfile目录下的所有文件列表

最近在做一个功能&#xff0c;需要使用获取rawfile下目录的所有文件 参考连接为&#xff1a; zRawfile-模块-C API-Localization Kit&#xff08;本地化开发服务&#xff09;-应用框架 - 华为HarmonyOS开发者 (huawei.com) 需要使用到native实现&#xff0c;实现步骤&#…

2008-2020年 中国健康与养老追踪调查CHARLS数据合集

中国健康与养老追踪调查&#xff08;China Health and Retirement Longitudinal Study, CHARLS&#xff09;是一项由北京大学国家发展研究院主持的大型跨学科调查项目。该项目始于2011年&#xff0c;每两到三年对样本进行一次追踪调查&#xff0c;旨在收集代表中国45岁及以上中…

在CentOS 7上安装MongoDB的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 MongoDB 是一个免费、开源的面向文档的数据库。它被归类为 NoSQL 数据库&#xff0c;因为它不依赖于传统的基于表的关系数据库结构…

C++_CH13_面向对象编程

C_CH13_面向对象编程 1.1 类 类&#xff08;class&#xff09;是数据和操作的组合。 我们以游戏角色为例&#xff0c;创建一个类 #include<iostream>class player//player这个类是我们自定义的一个类型 {int x;int y;//二维坐标int speed;//速度int power;//力量};int…

重载与重写:Java中方法的多态性

重载与重写&#xff1a;Java中方法的多态性 引言 在Java编程语言中&#xff0c;多态性是一个核心概念&#xff0c;它允许我们以统一的方式处理不同类型的对象。Java提供了两种实现多态性的方法&#xff1a;重载&#xff08;Overloading&#xff09;和重写&#xff08;Overrid…

面试经典算法150题系列-反转字符串中的单词

反转字符串中的单词 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能…

react 中的useState useEffect

下面的这些hook我们常用的一些 useState useEffect useCallback、useMemo、useRef 和 useContex 下一个文章中讲述&#xff08;useCallback、useMemo、useRef 和 useContex&#xff09; 下面我将讲解什么时候使用是最好的 首先我们需要明确的一点是&#xff0c;这些hook都…

转-600条最强linux命令

一、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -…

关于告警,要想做好,从这些方面着手

各类监控系统都会产生告警事件&#xff0c;于是&#xff0c;就产生了 FlashDuty、PagerDuty、Opsgenie 这类产品&#xff0c;做告警事件的收敛降噪、排班认领升级等。如果你想增强自己公司的告警事件处理能力&#xff0c;参考&#xff08;chao xi&#xff09;这些产品的功能就可…

使用统计方法在AMD GPU上使用JAX Profiler可靠地比较大型生成AI模型中的算法性能

Using statistical methods to reliably compare algorithm performance in large generative AI models with JAX Profiler on AMD GPUs — ROCm Blogs 摘要 本文提供了一份详细的指南&#xff0c;介绍如何在JAX实现的生成AI模型中测量和比较各种算法的性能。利用JAX Profiler…

35岁程序员的4条出路!请提早布局!

小编准备入门了Python入门学习籽料80个Python爬虫实战入门实例 点击 领取&#xff08;无偿获得&#xff09; 20多岁&#xff0c;初入职场&#xff0c;满腔热血&#xff0c;对未来充满憧憬&#xff1b; 30多岁&#xff0c;家庭事业双重压力&#xff0c;开始迷茫&#xff0c;对…

阿里云发送短信功能(Java)

&#xff08;1&#xff09;注册用户&#xff0c;并且开通短信套餐 &#xff08;2&#xff09; 点击快速学习&#xff0c;然后绑定测试的手机号码。 选用专用测试签名&#xff08;自定义的话阿里可能会验证什么什么的比较麻烦&#xff09; 然后在选取调用API &#xff08;3&…

10、Flink 动态表之表到流的转换详解

表到流的转换 动态表可以像普通数据库表一样通过 INSERT、UPDATE 和 DELETE 来不断修改,它可能是一个只有一行、不断更新的表,也可能是一个 insert-only 的表,没有 UPDATE 和 DELETE 修改,或者介于两者之间的其他表。 在将动态表转换为流或将其写入外部系统时,需要对这些…

3秒AI写真出图,Stable Diffusion2024升级版+使用教程来了!(无需安装,解压即用)

要说今年摄影圈最大的新秀 那妥妥的就Stable Diffusion 比如下面的写真照片 你敢信这是SD绘画生成的&#xff1f; 就在刚刚它又全面升级了 新版无需安装&#xff0c;直接解压就能用 比之前推送的更加智能、快速和简单 另外还特意为大家准备了 Stable Diffusion 人工智能…

故障诊断 | 基于小波时频图与Swin Transformer的轴承故障诊断方法(PyTorch)

文章目录 文章概述程序设计参考资料文章概述 基于小波时频图与Swin Transformer的轴承故障诊断方法 针对用传统的故障诊断方法难以对非线性非平稳的柴油机故障信号进行准确高效诊断的问题, 提出基于小波时频图与Swin Transformer的故障诊断方法。该方法可以有效结合小波时频分…

Git实战精粹

一、快速入门 1. 什么是Git Git是一个分布式的版本控制软件。 软件&#xff0c;类似于QQ、office、dota等安装到电脑上才能使用的工具版本控制&#xff0c;类似于毕业论文、写文案、视频剪辑等&#xff0c;需要反复修改和保留原历史数据分布式 文件夹拷贝本地版本控制集中式…

03-Python的运行方式

《Python 教程》总结 持续更新中&#xff0c;学习交流请加作者微信: python-baby 脚本和模块 脚本&#xff08;Scripts&#xff09; 在计算机术语中&#xff0c;脚本是指一个包含逻辑顺序的文本文件&#xff0c;我们可以运行脚本来完成特定任务。这些逻辑顺序通常用脚本语言…

如何在Java中使用protobuf

写在前面 本文看下在Java中如何使用protofbuf。 1&#xff1a;介绍 1.1&#xff1a;什么是protobuf 是一种数据格式&#xff0c;同json&#xff0c;xml&#xff0c;等。但是一种二进制数据格式。 1.2&#xff1a;强在哪里&#xff1f;为啥要用&#xff1f; 小&#xff0c…

org.apache.commons.lang.math.NumberUtils#isNumber 解释

源码 /*** <p>Checks whether the String a valid Java number.</p>** <p>Valid numbers include hexadecimal marked with the <code>0x</code>* qualifier, scientific notation and numbers marked with a type* qualifier (e.g. 123L).</…