题解 | #红和绿#python

红和绿

https://www.nowcoder.com/practice/56ab932abac44c8aabf0af75f598a0b4

# 总体分为2种场景:1、全部涂染为一种颜色(红或绿);2、保留2种颜色,R在前,G在右。2种场景的结果取最小值
# 保留2种颜色时,第一个必须是R,最后一个必须是G,中间的直接递归
s=input()
def func(s):
    # 空字符串,或者字符串中只包含一种字符,则无需涂染
    if len(set(s))==1 or not s:
        return 0
    else:
        ans=0
        if s[0]!='R':
            ans+=1
        if s[-1]!='G':
            ans+=1
        # 可全部涂染成一种颜色,或保留2中颜色,且R在前,G在右
        return min(s.count('R'),s.count('G'),ans+func(s[1:-1]))
print(func(s))

全部评论

相关推荐

投递美团等公司10个岗位
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务