给定一个字符串,里面只包含 R、G、B 三个字符,请给这个字符串排序,要求最终结果的顺序是所有R在最前面,所有G在中间,所有B在最后。
例如:
给定一个字符串GBRRGBGG,排完序后:RRGGGGBB。
count()
方法,统计出 R、G、B 三个字符的个数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)))
while
循环,判断条件为 current 小于等于 right,如果 current 大于 right ,那么结束循环join()
方法将列表转换为字符串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)))
原文:https://www.cnblogs.com/wintest/p/13871879.html