跳到主要内容

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

链接:1653.使字符串平衡的最少删除次数
难度:Medium
标签:栈、字符串、动态规划
简介:请你返回使 s 平衡 的 最少 删除次数。

题解 1 - cpp

  • 编辑时间:2023-03-06
  • 执行用时:64ms
  • 内存消耗:21.6MB
  • 编程语言:cpp
  • 解法介绍:遍历到b的时候不做处理,遍历到a的时候考虑删除当前a或者删除前面的b。
class Solution {
public:
int minimumDeletions(string s) {
int dp = 0, b = 0;
for (auto &c : s) {
if (c == 'a') dp = min(dp + 1, b);
else b += 1;
}
return dp;
}
};

题解 2 - python

  • 编辑时间:2023-03-06
  • 执行用时:300ms
  • 内存消耗:15.5MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def minimumDeletions(self, s: str) -> int:
dp, b = 0, 0
for c in s:
if c == 'a':
dp = min(dp+1, b)
else:
b += 1
return dp

题解 3 - rust

  • 编辑时间:2023-03-06
  • 执行用时:16ms
  • 内存消耗:2.2MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn minimum_deletions(s: String) -> i32 {
let (mut dp, mut b) = (0, 0);
for c in s.chars() {
if c == 'a' {
dp = b.min(dp + 1);
} else {
b += 1;
}
}
dp
}
}