用 Python 编写程序,找出需要删除的最少字符数,以使 A 位于 B 之前

pythonserver side programmingprogramming更新于 2026/2/16 0:44:17

假设我们有一个字符串 s,仅包含两个字母 A 和 B,我们必须找出需要从 s 中删除的最少字母数,以使所有出现的 A 位于所有出现的 B 之前。

因此,如果输入为 S = "AABAABB",则输出将为 1,因为我们可以删除最后一个 A 来获得 AABBB

要解决这个问题,我们将遵循以下步骤:

  • a_right := "A" 出现的次数在 s 中

  • b_left := 0

  • ans := a_right

  • 对于 s 中的每个索引 i 和字符 c,执行

    • 如果 c 与"A"相同,则

      • a_right := a_right - 1

    • 否则,

      • b_left := b_left + 1

    • ans := ans 和 a_right + b_left 中的最小值

  • 返回 ans

让我们看看以下实现以便更好地理解:

示例

class Solution:
   def solve(self, s):
      a_right = s.count("A")
      b_left = 0

      ans = a_right
      for i, c in enumerate(s):
         if c == "A":
            a_right -= 1
         else:
            b_left += 1
         ans = min(ans, a_right + b_left)
      return ans

ob = Solution()
S = "AABAABB"
print(ob.solve(S))

输入

"AABAABB"

输出

1

相关文章


有用资源