题解 | #红和绿#

红和绿

http://www.nowcoder.com/questionTerminal/69606208a7734ae0895724cfb951aef8

str = input("")
# 以每个位置作为最后一个红色所在的位置,判断为i前面([0, i-1])有多少个绿色g_cnt,后面([i+1, lens-1])有多个红色r_cnt,i位置满足要求需要染色的总个数 = g_cnt + r_cnt
lens = len(str)
g_cnts = [0 for _ in range(lens)]

g_cnt = r_cnt = 0
for ind, elem in enumerate(str):
    if elem == 'G':
        g_cnt += 1
    g_cnts[ind] = g_cnt
res = float("inf")
for ind in range(lens - 1, -1, -1):
    res = min(res, g_cnts[ind] + r_cnt)
    if str[ind] == 'R':
        r_cnt += 1
res = min(res, g_cnt, r_cnt)
print(res)
全部评论

相关推荐

02-16 01:39
南昌大学 Java
重剑Ds:感觉不太可能 后端都减飞了 根本不缺人
点赞 评论 收藏
分享
02-25 13:02
中南大学 C++
_追梦旅人_:大家考虑深圳睿联不,我们正在春招,可在我主页看岗位,感兴趣可直接投递~
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务