Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมนับจำนวนการพลิกที่จำเป็นในการสร้าง x ทั้งหมดก่อน y ใน Python


สมมติว่าเรามีสตริงตัวพิมพ์เล็ก s ที่มีตัวอักษร x และ y ตอนนี้ให้พิจารณาการดำเนินการที่เราเปลี่ยน x ตัวเดียวเป็น y หรือในทางกลับกัน เราต้องหาจำนวนครั้งขั้นต่ำที่เราต้องดำเนินการนั้นเพื่อตั้งค่า x ทั้งหมดก่อน y ทั้งหมด

ดังนั้น หากอินพุตเป็น s ="yxyyyyxyxx" ผลลัพธ์จะเป็น 4

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • y_left :=0

  • x_right :=จำนวน "x" ใน s, res :=จำนวน "x" ใน s

  • สำหรับแต่ละรายการใน s ทำ

    • หากรายการเหมือนกับ "x" แล้ว

      • x_right :=x_right − 1

    • มิฉะนั้น

      • y_left :=y_left + 1

    • res :=ขั้นต่ำของ res และ (y_left + x_right)

  • ผลตอบแทน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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