สมมติว่าเรามีสตริงตัวพิมพ์เล็ก 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