文章目录

  • 1. 题目
  • 2. 解题

1. 题目

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

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

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

示例 1:
输入:s = "aababbab"
输出:2
解释:你可以选择以下任意一种方案:
下标从 0 开始,删除第 2 和第 6 个字符("aababbab" -> "aaabbb"),
下标从 0 开始,删除第 3 和第 6 个字符("aababbab" -> "aabbbb")。示例 2:
输入:s = "bbaaaaabb"
输出:2
解释:唯一的最优解是删除最前面两个字符。提示:
1 <= s.length <= 10^5
s[i] 要么是 'a' 要么是 'b'​ 。​

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-deletions-to-make-string-balanced
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dpa, dpb 表示以 a, b 结尾的情况下,最少的删除次数
class Solution {public:int minimumDeletions(string s) {int n = s.size();vector<int> dpa(n, 0), dpb(n, 0);if(s[0] == 'a')dpb[0] = 1;//以 b 结尾需要删除1次elsedpa[0] = 1;for(int i = 1; i < n; ++i){if(s[i] == 'a'){dpa[i] = dpa[i-1];dpb[i] = min(dpa[i-1]+1, dpb[i-1]+1);}else{dpa[i] = dpa[i-1]+1;dpb[i] = min(dpa[i-1], dpb[i-1]);}}return min(dpa[n-1], dpb[n-1]);}
};

172 ms 50.7 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1653. 使字符串平衡的最少删除次数(DP)相关推荐

  1. LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)

    文章目录 1. 题目 2. 解题 2.1 n^2 解法 2.2 nlogn 解法 197 / 1891,前10.4% 435 / 6154,前7.07% 前三题如下: LeetCode 5557. 最 ...

  2. LeetCode 1674. 使数组互补的最少操作次数(差分思想)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit . 每一次操作,你可以将 nums 中的任何整数替换为 1 到 limit 之间的 ...

  3. Leetcode1963. 使字符串平衡的最小交换次数[C++题解]:贪心

    文章目录 题目 题解 题目 题目来源:https://leetcode-cn.com/problems/minimum-number-of-swaps-to-make-the-string-balan ...

  4. LeetCode 921. 使括号有效的最少添加(栈)

    1. 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...

  5. LeetCode 1568. 使陆地分离的最少天数(DFS)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid ,其中 0 表示水,而 1 表示陆地. 岛屿由水平方向或竖直方向上相邻的 1 (陆地)连接形成. 如 ...

  6. Java实现 LeetCode 801 使序列递增的最小交换次数 (DP)

    801. 使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元 ...

  7. LeetCode 801. 使序列递增的最小交换次数(动态规划)

    1. 题目 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元素之后,数组 A 和 B ...

  8. leetcode - 801. 使序列递增的最小交换次数

    解题思路:使用两个状态量来存储信息: swap[i]表示交换A和B中第i个数字,A和B中前i个数字达到严格递增所需要的最小交换次数. keep[i]表示不交换A和B中第i个数字,A和B中前i个数字达到 ...

  9. LeetCode 995. K 连续位的最小翻转次数(差分思想)

    文章目录 1. 题目 2. 解题 1. 题目 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 ...

最新文章

  1. CSS的未来:游戏的变革Flexbox
  2. OpenFire源码学习之二十五:消息回执与离线消息(下)
  3. android系统相机自动录像,android 调用系统相机录像并保存
  4. 逆反过程的学习会如何
  5. 创建、修改、删除表总结
  6. python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...
  7. php+mysql+apache 环境搭建
  8. RToax / fedora-coreos-config: [sysroot.mount] mount: wrong fs type, bad option, bad superblock on /
  9. 数据库的运维策略脚本篇(内附脚本,无私分享)
  10. 路印zkRollup AMM将在月底启动流动性挖矿
  11. python单词的含义-python
  12. 判断用户是否开启定位功能 / 判断用户是否为应用程序开启定位功能
  13. HTML5 CSS3学习
  14. python counter怎么用_Counter的基本用法
  15. UVA 11572 唯一的雪花 Unique Snowflakes
  16. matlab中电压跟踪型pwm,新型数字锁相环实现对电压信号的无差跟踪
  17. 字节跳动Android内部学习资料泄露,高级面试题+解析
  18. Dom4J+XPath
  19. springboot大学生网络教学平台的设计与实现毕业设计源码281819
  20. fastJson、JackJson以及Gson序列化对象与get、set以及对象属性之间的关系

热门文章

  1. 五个温度带的分界线_女神建筑师在拿破仑故乡打造的海景别墅,超美!超有温度!【环球设计2225期】...
  2. python中xml模块_python学习第十五天-2(XML模块)
  3. import导入模块
  4. kotlin编译失败_Kotlin使用GraalVM开发原生命令行应用
  5. C# Socket 编程详解
  6. 第七季2:MP4v2库的移植与播放实战
  7. 微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...
  8. python3 django连接mysql 数据库
  9. Django之缓存、信号和图片验证码
  10. 笨方法学python(本文为阅读时从此书摘录的笔记) 第五天