Python程序:计算使所有x位于y之前所需的翻转次数


假设我们有一个包含字母x和y的小写字符串s。现在考虑一个操作,我们将单个x更改为y或反之亦然。我们必须找到我们需要执行该操作的最小次数,以将所有x放在所有y之前。

因此,如果输入类似于s = "yxyyyyxyxx",则输出将为4。

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

  • y_left := 0

  • x_right := s中"x"的数量,res := s中"x"的数量

  • 对于s中的每个项目,执行:

    • 如果项目与"x"相同,则

      • x_right := x_right − 1

    • 否则,

      • y_left := y_left + 1

    • res := res 和 (y_left + x_right) 的最小值

  • 返回 res

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

示例

实时演示

class Solution:
   def solve(self, s):
      y_left = 0
      x_right = res = s.count("x")
      for item in s:
         if item == "x":
            x_right -= 1
         else:
            y_left += 1
         res = min(res, y_left + x_right)
      return res
ob = Solution()
s = "yxyyyyxyxx"
print(ob.solve(s))

输入

"yxyyyyxyxx"

输出

4

更新于:2020-12-26

134 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.