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

โปรแกรมจัดแบ่งรายการสี (Red, Green, Blue) ใน Python

สมมติว่าเรามีรายการสตริงสีที่อาจมี "red", "green", "blue" เราต้องจัดแบ่งรายการให้สีแดง (red) อยู่หน้าสีเขียว (green) และสีเขียวอยู่หน้าสีน้ำเงิน (blue)

ตัวอย่างเช่น หาก colors = ["blue", "green", "blue", "red", "red"] ผลลัพธ์จะเป็น ['red', 'red', 'green', 'blue', 'blue']

ขั้นตอนการแก้ปัญหา (Dutch National Flag Algorithm - 3-way Partition)

  1. กำหนดตัวนับ green = 0, blue = 0, red = 0
  2. วนลูปผ่านแต่ละ string ใน strs:
    • หากเป็น "red":
      • strs[blue] = "blue"; blue += 1
      • strs[green] = "green"; green += 1
      • strs[red] = "red"; red += 1
    • หากเป็น "green":
      • strs[blue] = "blue"; blue += 1
      • strs[green] = "green"; green += 1
    • หากเป็น "blue":
      • strs[blue] = "blue"; blue += 1
  3. คืนค่า strs

ตัวอย่างโค้ด Python

class Solution:
    def solve(self, strs):
        green = 0
        blue = 0
        red = 0
        
        for string in strs:
            if string == "red":
                strs[blue] = "blue"
                blue += 1
                strs[green] = "green"
                green += 1
                strs[red] = "red"
                red += 1
            elif string == "green":
                strs[blue] = "blue"
                blue += 1
                strs[green] = "green"
                green += 1
            elif string == "blue":
                strs[blue] = "blue"
                blue += 1
        
        return strs

ob = Solution()
colors = ["blue", "green", "blue", "red", "red"]
print(ob.solve(colors))  # Output: ['red', 'red', 'green', 'blue', 'blue']

อินพุต

["blue", "green", "blue", "red", "red"]

เอาต์พุต

['red', 'red', 'green', 'blue', 'blue']