YF云飞 2023-05-21 10:39 采纳率: 65%
浏览 103
已结题

算法求解答,需要代码+注释

img

给你一个仅由 大写 英文字符组成的字符串 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 仅由大写英文字母组成

求解答

  • 写回答

2条回答 默认 最新

  • 这一次有糖 2023-05-21 10:50
    关注

    基于你提供的代码,我看到字符是 "A" 并缺栈顶元素是 "D" 时,它也会将字符压入栈中,而不是你使用的pop,可以改进用双向栈来实现,这里就不想改动

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月21日
  • 已采纳回答 5月21日
  • 赞助了问题酬金15元 5月21日
  • 创建了问题 5月21日