题解 | #红和绿#

红和绿

https://www.nowcoder.com/practice/69606208a7734ae0895724cfb951aef8

###这种动态更新的精髓在于,按照要求对于R从左边更新,但是记录这个更新次数的数组的维度需要比原字符串的维度大1,因为在最开始或者最后的0代表着开始,那么针对第一个字符元素,字符是[0]
但是记录的次数的这个数组就是[1]了。
###这里不能使用numpy库,否则可以使用arrR=np.zeros(n+1),但是一定要注意利用np.zeros创建的0数组是一个array格式,并且这个数值是float形式。0.0 
def color_count(str):
    
    n=len(str)
    arrR=[0]*(n+1)
    arrG=[0]*(n+1)
    for i in range(n):
        if str[i]=='R':
            arrR[i+1]=arrR[i]
        else:
            arrR[i+1]=arrR[i]+1
    for j in range(n-1,-1,-1):
        if str[j]=='G':
            arrG[j]=arrG[j+1]
        else:
            arrG[j]=arrG[j+1]+1
    min_count=n ###这个就是首先给定一个初始值,就是全部都要变,给定一个n
    # 最优解肯定是最在一个分界点使得左边都是R右边都是G
    # 遍历分割点
    for i in range(n+1):
        count=arrR[i]+arrG[i]
        min_count=min(min_count,count)
    return min_count
import sys
str=input()
print(int(color_count(str)))


全部评论

相关推荐

点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务