程序在Python中对颜色列表进行分区

假设我们有一个颜色字符串列表,其中可能包含“红色”,“绿色”和“蓝色”,我们必须对列表进行分区,以使红色位于绿色之前,绿色位于蓝色之前。

因此,如果输入的颜色像[color] = [“ blue”,“ green”,“ blue”,“ red”,“ red”],那么输出将是['red','red','green','蓝色”,“蓝色”]

为了解决这个问题,我们将遵循以下步骤-

  • 绿色:= 0,蓝色:= 0,红色:= 0

  • 对于strs中的每个字符串,执行

    • strs [blue]:=“蓝色”

    • 蓝色:=蓝色+ 1

    • strs [blue]:=“蓝色”

    • 蓝色:=蓝色+ 1

    • strs [green]:=“绿色”

    • 绿色:=绿色+ 1

    • strs [blue]:=“蓝色”

    • 蓝色:=蓝色+ 1

    • strs [green]:=“绿色”

    • 绿色:=绿色+ 1

    • strs [red]:=“红色”

    • 红色:=红色+ 1

    • 如果字符串与“红色”相同,则

    • 否则,当字符串与“绿色”相同时,则

    • 否则,当字符串与“ blue”相同时,则

    • 返回str

    让我们看下面的实现以更好地理解-

    示例

    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']