leetcode:2696. 删除子串后的字符串最小长度(python3解法)

难度:简单

给你一个仅由 大写 英文字符组成的字符串 s

你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 "AB""CD" 子字符串。

通过执行操作,删除所有 "AB""CD" 子串,返回可获得的最终字符串的 最小 可能长度。

注意 ,删除子串后,重新连接出的字符串可能会产生新的 "AB""CD" 子串。

示例 1:

复制代码
输入:s = "ABFCACDB"
输出:2
解释:你可以执行下述操作:
- 从 "ABFCACDB" 中删除子串 "AB",得到 s = "FCACDB" 。
- 从 "FCACDB" 中删除子串 "CD",得到 s = "FCAB" 。
- 从 "FCAB" 中删除子串 "AB",得到 s = "FC" 。
最终字符串的长度为 2 。
可以证明 2 是可获得的最小长度。

示例 2:

复制代码
输入:s = "ACBBD"
输出:5
解释:无法执行操作,字符串长度不变。

提示:

  • 1 <= s.length <= 100
  • s 仅由大写英文字母组成

题解:

复制代码
class Solution:
    def minLength(self, s: str) -> int:
        stack = []
        for i in s:
            stack.append(i)
            if len(stack) >= 2 and ((stack[-2] == 'A' and stack[-1] == 'B') or (stack[-2] == 'C' and stack[-1] == 'D')):
                stack.pop()
                stack.pop()
        return len(stack)
相关推荐
sa100271 分钟前
基于Python的京东评论爬虫
开发语言·爬虫·python
Jeremy爱编码5 分钟前
leetcode热题组合总和
算法·leetcode·职场和发展
努力学算法的蒟蒻15 分钟前
day57(1.8)——leetcode面试经典150
算法·leetcode·面试
言之。15 分钟前
大模型 API 中的 Token Log Probabilities(logprobs)
人工智能·算法·机器学习
Cigaretter722 分钟前
Day 38 早停策略和模型权重的保存
python·深度学习·机器学习
自然数e26 分钟前
c++多线程【多线程常见使用以及几个多线程数据结构实现】
数据结构·c++·算法·多线程
黛色正浓29 分钟前
leetCode-热题100-普通数组合集(JavaScript)
java·数据结构·算法
元亓亓亓33 分钟前
LeetCode热题100--5. 最长回文子串--中等
linux·算法·leetcode
sunywz36 分钟前
【JVM】(2)java类加载机制
java·jvm·python
千金裘换酒37 分钟前
LeetCode 环形链表+升级版环形链表
算法·leetcode·链表