LeetCode 1653. 使字符串平衡的最少删除次数(DP)
文章目录
- 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)相关推荐
- LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)
文章目录 1. 题目 2. 解题 2.1 n^2 解法 2.2 nlogn 解法 197 / 1891,前10.4% 435 / 6154,前7.07% 前三题如下: LeetCode 5557. 最 ...
- LeetCode 1674. 使数组互补的最少操作次数(差分思想)
文章目录 1. 题目 2. 解题 1. 题目 给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit . 每一次操作,你可以将 nums 中的任何整数替换为 1 到 limit 之间的 ...
- Leetcode1963. 使字符串平衡的最小交换次数[C++题解]:贪心
文章目录 题目 题解 题目 题目来源:https://leetcode-cn.com/problems/minimum-number-of-swaps-to-make-the-string-balan ...
- LeetCode 921. 使括号有效的最少添加(栈)
1. 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...
- LeetCode 1568. 使陆地分离的最少天数(DFS)
文章目录 1. 题目 2. 解题 1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid ,其中 0 表示水,而 1 表示陆地. 岛屿由水平方向或竖直方向上相邻的 1 (陆地)连接形成. 如 ...
- Java实现 LeetCode 801 使序列递增的最小交换次数 (DP)
801. 使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元 ...
- LeetCode 801. 使序列递增的最小交换次数(动态规划)
1. 题目 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元素之后,数组 A 和 B ...
- leetcode - 801. 使序列递增的最小交换次数
解题思路:使用两个状态量来存储信息: swap[i]表示交换A和B中第i个数字,A和B中前i个数字达到严格递增所需要的最小交换次数. keep[i]表示不交换A和B中第i个数字,A和B中前i个数字达到 ...
- LeetCode 995. K 连续位的最小翻转次数(差分思想)
文章目录 1. 题目 2. 解题 1. 题目 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 ...
最新文章
- CSS的未来:游戏的变革Flexbox
- OpenFire源码学习之二十五:消息回执与离线消息(下)
- android系统相机自动录像,android 调用系统相机录像并保存
- 逆反过程的学习会如何
- 创建、修改、删除表总结
- python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...
- php+mysql+apache 环境搭建
- RToax / fedora-coreos-config: [sysroot.mount] mount: wrong fs type, bad option, bad superblock on /
- 数据库的运维策略脚本篇(内附脚本,无私分享)
- 路印zkRollup AMM将在月底启动流动性挖矿
- python单词的含义-python
- 判断用户是否开启定位功能 / 判断用户是否为应用程序开启定位功能
- HTML5 CSS3学习
- python counter怎么用_Counter的基本用法
- UVA 11572 唯一的雪花 Unique Snowflakes
- matlab中电压跟踪型pwm,新型数字锁相环实现对电压信号的无差跟踪
- 字节跳动Android内部学习资料泄露,高级面试题+解析
- Dom4J+XPath
- springboot大学生网络教学平台的设计与实现毕业设计源码281819
- fastJson、JackJson以及Gson序列化对象与get、set以及对象属性之间的关系
热门文章
- 五个温度带的分界线_女神建筑师在拿破仑故乡打造的海景别墅,超美!超有温度!【环球设计2225期】...
- python中xml模块_python学习第十五天-2(XML模块)
- import导入模块
- kotlin编译失败_Kotlin使用GraalVM开发原生命令行应用
- C# Socket 编程详解
- 第七季2:MP4v2库的移植与播放实战
- 微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...
- python3 django连接mysql 数据库
- Django之缓存、信号和图片验证码
- 笨方法学python(本文为阅读时从此书摘录的笔记) 第五天