สมมติว่าเรามีรายการสตริงสี ซึ่งอาจมี "สีแดง" "สีเขียว" และ "สีน้ำเงิน" เราต้องแบ่งพาร์ติชั่นรายการเพื่อให้สีแดงมาก่อนสีเขียว และสีเขียวมาก่อนสีน้ำเงิน
ดังนั้น หากอินพุตเป็นสี =["สีน้ำเงิน", "เขียว", "น้ำเงิน", "แดง", "แดง"] ผลลัพธ์จะเป็น ['สีแดง', 'สีแดง', 'สีเขียว', ' ฟ้า', 'ฟ้า']
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
สีเขียว :=0, สีน้ำเงิน :=0, สีแดง :=0
-
สำหรับแต่ละสตริงใน strs ทำ
-
หากสตริงเหมือนกับ "สีแดง" แล้ว
-
strs[สีน้ำเงิน] :="สีน้ำเงิน"
-
สีน้ำเงิน :=สีน้ำเงิน + 1
-
strs[green] :="สีเขียว"
-
สีเขียว :=สีเขียว + 1
-
strs[สีแดง] :="สีแดง"
-
แดง :=แดง + 1
-
-
มิฉะนั้นเมื่อสตริงเหมือนกับ "สีเขียว" แล้ว
-
strs[สีน้ำเงิน] :="สีน้ำเงิน"
-
สีน้ำเงิน :=สีน้ำเงิน + 1
-
strs[green] :="สีเขียว"
-
สีเขียว :=สีเขียว + 1
-
-
มิฉะนั้นเมื่อสตริงเหมือนกับ "สีน้ำเงิน" แล้ว
-
strs[สีน้ำเงิน] :="สีน้ำเงิน"
-
สีน้ำเงิน :=สีน้ำเงิน + 1
-
-
-
ส่งคืนสตริง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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))
อินพุต
["blue","green", "blue", "red", "red"]
ผลลัพธ์
['red', 'red', 'green', 'blue', 'blue']