当前位置: 首页 > news >正文

Leetcode.1653 使字符串平衡的最少删除次数

题目链接

Leetcode.1653 使字符串平衡的最少删除次数 Rating : 1794

题目描述

给你一个字符串 s,它仅包含字符 'a''b'​​​​ 。

你可以删除 s中任意数目的字符,使得 s平衡 。当不存在下标对 (i,j)满足 i < j,且 s[i] = 'b'的同时 s[j]= 'a',此时认为 s平衡 的。

请你返回使 s平衡 的 最少 删除次数。

示例 1:

输入:s = “aababbab”
输出:2
解释:你可以选择以下任意一种方案:
下标从 0 开始,删除第 2 和第 6 个字符(“aababbab” -> “aaabbb”),
下标从 0 开始,删除第 3 和第 6 个字符(“aababbab” -> “aabbbb”)。

示例 2:

输入:s = “bbaaaaabb”
输出:2
解释:唯一的最优解是删除最前面两个字符。

提示:

  • 1<=s.length<=1051 <= s.length <= 10^51<=s.length<=105
  • s[i]要么是 'a'要么是 'b'​。​

分析:

本题使用 前后缀分解 求解。

我们做出如下定义:

  • 定义 left(i)left(i)left(i)s[0,i]'a'的数量
  • 定义 right(i)right(i)right(i)s[i,n-1]'b'的数量

所以 n - (left[i] + right[i + 1])就是以 i为分界点,使 s为平衡字符串的删除次数。所以让 i[0,n-1]遍历一遍,就可以求得最少的删除次数。

时间复杂度: O(n)O(n)O(n)

C++代码:


class Solution {
public:int minimumDeletions(string s) {int n = s.size();vector<int> left(n+1),right(n+1);for(int i = 1;i <= n;i++) left[i] = left[i-1] + (s[i-1] == 'a');for(int i = n - 1;i >= 0;i--) right[i] = right[i+1] + (s[i] == 'b');int ans = n;for(int i = 0;i <= n;i++){int d =  n - left[i] - right[i];ans = min(ans,d);}return ans;}
};

Java代码:


class Solution {public int minimumDeletions(String s) {int n = s.length();int[] left = new int[n+1];int[] right = new int[n+1];for(int i = 1;i <= n;i++) left[i] = left[i-1] + (s.charAt(i-1) == 'a' ? 1 : 0);for(int i = n - 1;i >= 0;i--) right[i] = right[i+1] + (s.charAt(i) == 'b' ? 1 : 0);int ans = n;for(int i = 0;i <= n;i++){int d = n - (left[i]+right[i]);ans = Math.min(ans,d);}return ans;}
}

相关文章:

Leetcode.1653 使字符串平衡的最少删除次数

题目链接 Leetcode.1653 使字符串平衡的最少删除次数 Rating &#xff1a; 1794 题目描述 给你一个字符串 s&#xff0c;它仅包含字符 a和 b​​​​ 。 你可以删除 s中任意数目的字符&#xff0c;使得 s平衡 。当不存在下标对 (i,j)满足 i < j&#xff0c;且 s[i] b的同…...

leetcode 71~80 学习经历

leetcode 71~80 学习经历71. 简化路径72. 编辑距离73. 矩阵置零74. 搜索二维矩阵75. 颜色分类76. 最小覆盖子串77. 组合78. 子集79. 单词搜索80. 删除有序数组中的重复项 II小结71. 简化路径 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &am…...

使用metrics-server监控k8s的资源指标

首先&#xff0c;欢迎使用DHorse部署k8s应用。 k8s可以通过top命令来查询pod和node的资源使用情况&#xff0c;如果直接运行该命令&#xff0c;如下所示。 [rootcentos05 deployment]# kubectl top pod W0306 15:23:24.990550 8247 top_pod.go:140] Using json format to …...

【Copula】考虑风光联合出力和相关性的Copula场景生成(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

【java基础】泛型程序设计基础

文章目录泛型是什么自定义泛型类自定义泛型方法类型变量的限定总结泛型是什么 泛型类和泛型方法有类型参数&#xff0c;这使得它们可以准确地描述用特定类型实例化时会发生什么。在没有泛型类之前&#xff0c;程序员必须使用Objct编写适用于多种类型的代码。这很烦琐&#xff…...

【省选模拟测试23 T1直径】更好的做法

题目大意和普通做法 省选模拟测试23 T1直径 题解 对于上文中有三个儿子的根节点的树&#xff0c;其直径数量为abbccaabbccaabbcca。那么对于上文中有nnn个儿子的根节点的树&#xff0c;其直径数量为多少呢&#xff1f; 每个儿子所在子树中的点与其他儿子所在子树中的点都能组…...

SpringCloud基础(3)-微服务远程调用

SpringCloud基础1. 微服务的远程调用2. Eureka注册中心1. 搭建Eureka服务注册中心1. 微服务的远程调用 服务提供者&#xff1a;一次业务中被其它服务调用的一方&#xff1b; 服务消费者&#xff1a;一次业务中调用其它服务的一方&#xff1b; 2. Eureka注册中心 记录所有服务…...

10.单点登录原理及JWT实现

单点登录原理及JWT实现 一、单点登录效果 首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址&#xff1a;https://gitee.com/xuxueli0323/xxl-sso?_fromgitee_search 把案例代码直接导入到IDEA中 然后分别修改下server和samples中的配置信息 在host文件中配置 …...

图表控件LightningChart.NET 系列教程(十一):LightningChart 组件——添加至 Blend WPF 项目

LightningChart.NET 是一款高性能 WPF 和 Winforms 图表,可以实时可视化多达1万亿个数据点。可有效利用CPU和内存资源&#xff0c;实时监控数据流。同时&#xff0c;LightningChart使用突破性创新技术&#xff0c;以实时优化为前提&#xff0c;大大提升了实时渲染的效率和效果&…...

libGDX:灯光效果实现一(实现一个点光源)

国内的libGDX文章很少&#xff0c;特别是libGDX实现灯光效果&#xff0c;所以就开始总结灯光效果的实现 绿色的框 是为了方便看到Body位置&#xff0c;使用Box2DDebugRenderer渲染的 工欲善其事&#xff0c;必先利其器&#xff0c;工具集合 gdx-setup.jar 1. 从libGDX官网下载…...

Java生态/Redis中如何使用Lua脚本

文章目录一、安装LUA1&#xff09;简单使用二、lua语法简介1、注释1&#xff09;单行注释2&#xff09;多行注释2、关键字3、变量1&#xff09;全局变量2&#xff09;局部变量4、数据类型1&#xff09;Lua数组2&#xff09;字符串操作5、if-else6、循环1&#xff09;for循环1&g…...

网络编程 socket 编程(一)

1. C/S 架构 C/S 架构即客户端/服务端架构&#xff0c;B/S 架构&#xff08;浏览器与服务端&#xff09;也是 C/S 架构的一种。 C/S 架构与 socket 的关系&#xff1a;学习 socket 可以完成 C/S 架构的开发。 2. osi 七层 一个完整的计算机系统由硬件、操作系统以及应用软件…...

【SpringCloud】SpringCloud教程之Nacos实战(一)

目录Nacos是什么&#xff1f;一.Nacos下载二.安装Nacos三.Nacos原理四.Nacos快速入门五.Nacos服务多级存储模式六.Nacos根据集群设置负载均衡1.根据同集群优先访问2.根据权重配置负载均衡七.Nacos的环境隔离八.Nacos和Eureka的区别前提&#xff1a;以订单服务和用户服务为例&am…...

高通Android 12/13 默认应用程序授予权限

1、一提到权限很多Android开发者都会想到 比如拨打电话 读取手机通讯录 定位 这些都是需要申请权限&#xff0c;Google Android 6.0之后&#xff08;sdk 23&#xff09; 需要app动态申请权限 或者权限组 2、我这里打个比方 比如需要在fm应用 默认打开mic权限 3、我们需要知道…...

代码随想录|day6|哈希表篇-- 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

总链接https://docs.qq.com/doc/DUEtFSGdreWRuR2p4?u329948d2f0044f34b7cbe72503f0b572 242.有效的字母异位词 链接&#xff1a;代码随想录 class Solution { public:bool isAnagram(string s, string t) {//两种做法&#xff0c;一种是int f[26]的数组,一种是map /*第一种&a…...

k8s学习之路 | Day20 k8s 工作负载 Deployment(下)

文章目录3. HPA 动态扩缩容3.1 HPA3.2 安装 metrics-server3.3 验证指标收集3.4 扩缩容的实现3.5 增加负载3.6 降低负载3.7 更多的度量指标4. 金丝雀部署4.1 蓝绿部署4.2 金丝雀部署4.3 金丝雀部署的实现5. Deployment 状态与排查5.1 进行中的 Deployment5.2 完成的 Deployment…...

考研复试——操作系统

文章目录操作系统1. 操作系统的特征&#xff1a;2. 进程与线程的关系以及区别3. 简述进程和程序的区别4. 进程的常见状态&#xff1f;以及各种状态之间的转换条件&#xff1f;5. 进程的调度算法有哪些&#xff1f;6. 什么是死锁&#xff1f;产生条件&#xff1f;如何避免死锁&a…...

Java ~ Collection/Executor ~ LinkedBlockingDeque【源码】

一 LinkedBlockingDeque&#xff08;链接阻塞双端队列&#xff09;类源码及机制详解 类 LinkedBlockingDeque&#xff08;链接阻塞双端队列&#xff09;类&#xff08;下文简称链接阻塞双端队列&#xff09;是BlockingDeqeue&#xff08;阻塞双端队列&#xff09;接口的唯一实现…...

【前缀和】截断数组、K倍区间、激光炸弹

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

函数编程:强大的 Stream API

函数编程&#xff1a;强大的 Stream API 每博一文案 只要有人的地方&#xff0c;世界就不会是冰冷的&#xff0c;我们可以平凡&#xff0c;但绝对不可以平庸。—————— 《平凡的世界》人活着&#xff0c;就得随时准备经受磨难。他已经看过一些书&#xff0c;知道不论是普通…...

ISDN PRI外线故障排查实战指南

在实际运维案例中&#xff0c;工程师不怕故障一直出现&#xff0c;就怕偶尔出问题。比如客户反馈打外线时&#xff0c;偶尔会出现断线的情况。当然可以通过MST或Trace命令去跟踪&#xff0c;但如果故障发生频率过低&#xff0c;抓日志往往很难。我们通常需要先检查线路质量&…...

DGX服务器上Spark性能优化:NUMA绑定与GPU资源精细调度实践

1. 项目概述与核心价值最近在折腾一个挺有意思的项目&#xff0c;叫adadrag/nemoclaw-dgx-spark。乍一看这个名字&#xff0c;像是把几个八竿子打不着的技术名词硬凑在了一起&#xff1a;adadrag像是个开发者代号&#xff0c;nemoclaw听着像某个工具或框架&#xff0c;dgx让人联…...

朋友学过都说好的家电清洗培训 行业前景与培训内容科普解读

家电清洗培训行业前景随着人们生活水平的提高&#xff0c;家电的普及率越来越高&#xff0c;对家电清洗的需求也日益增长。据相关数据显示&#xff0c;近年来家电清洗市场规模呈现逐年上升的趋势。在城市中&#xff0c;越来越多的家庭开始重视家电的清洁与保养&#xff0c;以延…...

Mochi语言解析:轻量级编程语言的设计原理与应用实践

1. 项目概述&#xff1a;一个为现代应用而生的轻量级编程语言最近在社区里看到不少朋友在讨论mochilang/mochi这个项目&#xff0c;作为一个对编程语言设计和运行时实现有浓厚兴趣的老码农&#xff0c;我立刻就被吸引住了。简单来说&#xff0c;Mochi 是一个新兴的、以轻量级和…...

ARM PMUv3架构详解与性能监控实战

1. ARM PMUv3架构概述 性能监控单元(Performance Monitor Unit, PMU)是现代处理器中用于硬件性能分析的关键组件。作为ARMv8架构的标准组成部分&#xff0c;PMUv3通过事件计数器和配置寄存器实现了对微架构事件的监测能力。在实际开发中&#xff0c;我们经常需要利用PMU来定位性…...

郎朗乐境音乐会定档7月5日深圳:以破界之姿,开启全维感官盛宴

2026年7月5日&#xff0c;郎朗乐境音乐会将在深圳市宝安体育中心体育馆启幕&#xff0c;作为“深圳国际形象大使”的郎朗&#xff0c;将在这座以创新著称的国际化都市&#xff0c;&#xff0c;进一步探索艺术表达形式的多重可能&#xff0c;呈现一场融合音乐、文化与多维感官体…...

打造极致氛围感编码环境:从视觉、听觉到工作流的全栈实践指南

1. 项目概述&#xff1a;当“氛围感”遇上“编码”&#xff0c;一个宝藏仓库的诞生如果你和我一样&#xff0c;是个对开发环境、工具流和“仪式感”有执念的程序员&#xff0c;那你肯定不止一次地折腾过自己的IDE主题、终端配色、字体&#xff0c;甚至桌面的壁纸和音乐。我们内…...

大语言模型对抗性攻击与防御:Decepticon框架原理与实践

1. 项目概述&#xff1a;当AI学会“伪装”&#xff0c;一场攻防博弈的新范式最近在安全圈和AI研究领域&#xff0c;一个名为“Decepticon”的项目引起了我的注意。这个项目来自PurpleAILAB&#xff0c;名字本身就充满了对抗的意味——“Decepticon”直译是“霸天虎”&#xff0…...

YOLOv8手机识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)

摘要 针对公共场所中手机使用行为检测的需求&#xff0c;本文基于YOLOv8目标检测算法构建了一套手机检测系统。实验采用自建手机图像数据集&#xff0c;经过数据标注与增强后&#xff0c;训练了YOLOv8模型。最终模型在验证集上取得了mAP50高达1.02、精度0.99、召回率0.99的优异…...

TestDisk与PhotoRec:免费开源的数据恢复双雄终极指南

TestDisk与PhotoRec&#xff1a;免费开源的数据恢复双雄终极指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 在数字时代&#xff0c;数据丢失是每个人都会遇到的噩梦。无论是误删除重要文件、分区表损坏…...