Python编程题15--RGB字符串排序

2020-10-25  本文已影响0人  wintests

题目

给定一个字符串,里面只包含 R、G、B 三个字符,请给这个字符串排序,要求最终结果的顺序是所有R在最前面,所有G在中间,所有B在最后。

例如:

给定一个字符串GBRRGBGG,排完序后:RRGGGGBB。

实现思路1

代码实现

def string_sort(s):
    count_R = s.count("R")
    count_G = s.count("G")
    count_B = s.count("B")
    return "{}{}{}".format(count_R * "R", count_G * "G", count_B * "B")

s = "GBRRGBGG"
print("原来的字符串:{}, 排序后的字符串:{}".format(s, string_sort(s)))

实现思路2

代码实现

def string_sort(s):
    left, current, right = 0, 0, len(s)-1
    str_list = [i for i in s]
    while current <= right:
        if str_list[current] == "R":
            str_list[left], str_list[current] = str_list[current], str_list[left]
            left += 1
            current += 1
        elif str_list[current] == "G":
            current += 1
        elif str_list[current] == "B":
            str_list[current], str_list[right] = str_list[right], str_list[current]
            right -= 1
    return "".join(str_list)

s = "GBRRGBGG"
print("原来的字符串:{}, 排序后的字符串:{}".format(s, string_sort(s)))

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

上一篇下一篇

猜你喜欢

热点阅读