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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告