Python编程题15--RGB字符串排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python编程题15--RGB字符串排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1800字,纯文字阅读大概需要3分钟。
内容图文
![Python编程题15--RGB字符串排序](/upload/InfoBanner/zyjiaocheng/624/19cd720dea0245b6903e1c61a0e3eb6e.jpg)
题目
给定一个字符串,里面只包含 R、G、B 三个字符,请给这个字符串排序,要求最终结果的顺序是所有R在最前面,所有G在中间,所有B在最后。
例如:
给定一个字符串GBRRGBGG,排完序后:RRGGGGBB。
实现思路1
- 利用字符串中
count()
方法,统计出 R、G、B 三个字符的个数 - 根据统计三个字符的个数,按RGB顺序的要求拼接出最终结果
代码实现
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
- 设置三个变量 left、current、right,其中 left 用于记录左侧 "R" 最右边的下一个元素位置,right 用于记录右侧 "B" 最左边的上一个元素位置,current 则用于记录当前操作的元素位置
- 因为 Python 中字符串不可变,所以这里转换为list列表来处理
- 使用
while
循环,判断条件为 current 小于等于 right,如果 current 大于 right ,那么结束循环 - 如果 current 对应的元素为 "R",那么把该元素放到 left 位置,在这里与 left 对应的元素交换即可,交换之后,left、current 均加1
- 如果 current 对应的元素为 "G",那么该元素不需要移动,直接让 current 加1
- 如果 current 对应的元素为 "B",那么把该元素与 right 对应的元素交换,交换之后 right 减去1,而 current 保持不变(因为与 right 对应元素交换后,这个元素可能是 "R",后续循环可能还需要处理)
- 对结果进行处理,通过
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)))
内容总结
以上是互联网集市为您收集整理的Python编程题15--RGB字符串排序全部内容,希望文章能够帮你解决Python编程题15--RGB字符串排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。