假设我们有一个颜色字符串列表,其中可能包含“红色”,“绿色”和“蓝色”,我们必须对列表进行分区,以使红色位于绿色之前,绿色位于蓝色之前。
因此,如果输入的颜色像[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']