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

【力扣1653】使字符串平衡的最少删除次数

给你一个字符串 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 <= 105

s[i] 要么是 'a' 要么是 'b'​ 。​

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/minimum-deletions-to-make-string-balanced

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我觉得这是一道挺典型的前缀和的题目,但是是假前缀和->如果你想节省空间的话,不用全记。

首先思考人类是怎么做这道题的。

枚举吗?枚举什么?

前a后b,枚举的是断点。

假设我们确定了断点是i这个位置,假设[0,i-1]是a,[i,end]是b,怎么计算要删除多少?

=>[0,i-1]中b的个数+[i,end]中a的个数。

那每次统计i点需要删除多少的时候需要重新统计a和b的个数吗?不需要,只需要根据当前的数决定谁加谁减就可以了。

b是正序前缀和,a是逆序前缀和。

class Solution {
public:int minimumDeletions(string s) {int l=s.length();if(l==1){return 0;}int conta=0;int contb=0;if(s[l-1]=='a'){conta=1;}if(s[0]=='b'){contb=1;}for(int i=l-2;i>=0;--i){if(s[i]=='a'){conta++;}  }int cont=conta;if(s[0]=='a'){conta--;}for(int i=1;i<l;++i){cont=min(cont,conta+contb);if(s[i]=='b'){contb++;}else{conta--;}}cont=min(cont,contb);return cont;}
};

但是感觉两次循环还是得有的,毕竟方向不一样。

动态规划的方法是我最开始的思路,但是我想不通也写不出来,现在还没看懂,谁给我仔细讲讲。。。

http://www.lryc.cn/news/32438.html

相关文章:

  • 链表的中间结点与链表的倒数第k个结点(精美图示详解哦)
  • 防静电监控仪可以检测现场设备是否和实际大地接触
  • 计算机网络第八版——第二章课后题答案(超详细)
  • 2023年3月全国DAMA-CDGA/CDGP数据管理认证火热报名中...
  • 查询与进程调度(CFS)相关信息
  • 07对MVC的理解
  • WebSocket与Socket、TCP、HTTP的关系
  • 音频基础知识简述 esp-sr 上手指南
  • Flex弹性布局一文通【最全Flex教学】
  • Navicat使用教程
  • 35岁测试人该何去何从?10年工作经验的我,只不过是一年的工作经验用了10年......
  • SpringBoot 项目中集成 Prometheus 和 Grafana
  • 红队APT——反朔源流量加密CSMSF证书指纹C2项目CDN域前置
  • Linux环境下实现并详细分析c/cpp线程池(附源码)
  • 移动web(三)
  • macbook怎么运行exe文件 mac打开exe文件的三大方法
  • GoldenGate(OGG)高可用XAG部署
  • 如何使用Docker容器部署O2OA(翱途)开发平台与OnlyOffice的集成版本?
  • springboot复习(黑马)(持续更新)
  • K_A16_001 基于STM32等单片机驱动HX711称重模块 串口与OLED0.96双显示
  • 单例模式之饿汉式
  • 软件测试培训三个月,找到工作了11K,面试总结分享给大家
  • Hbase备份与恢复工具Snapshot的基本概念与工作原理
  • RTOS中事件集的实现原理以及实用应用
  • 计及新能源出力不确定性的电气设备综合能源系统协同优化(Matlab代码实现)
  • 推荐几个超实用的开源自动化测试框架
  • Mac 上解压缩 RAR 文件
  • C++核心编程<引用>(2)
  • 零入门kubernetes网络实战-20->golang编程syscall操作tun设备介绍
  • springboot之自动配置