小明有根绳子,上面挂满了玻璃球,玻璃球的颜色有红、绿、蓝三种,分别用字符r
、g
、b
表示,红色球的得分为1分,绿色球为2分,蓝色球为3分。此外,若某个球的颜色与前面的球相同,则会额外获得奖励分,具体来说,与前面1个球相同奖励1分,与前面2个球都相同奖励2分,以此类推。给定一串由这些字符组成的字符串,任务是计算这串玻璃球的总得分。
由于string的长度只有1e4,可以直接暴力做,n^2也只有1e8,小常数1s内可以跑完。直接往前遍历有几个字符和它相同即可。
或者基于简单dp的方式,每个位置保存它前面与它相等且串联的字符数量,每个字符只需要看其是否与上一个字符相等即可,相等则加1,否则置为0。
小明有根绳子,上面有很多玻璃球,玻璃球由红绿蓝三种颜色组成,其中红色球1分,绿色求2分,蓝色球三分。
现在有一个积分规则,当一个球与前面1个球颜色相同会奖励一分,和前面2个球都相同会奖励2分,以此类推。
现在给定一串玻璃球,计算该玻璃球的累计分数,红色玻璃球用字符r
表示,绿色用g
表示,蓝色用b
表示。
输入:一个string由r,g,b组成的字符串
输出:经过计算后的得分
备注:
输入
rgb
输出
6
说明:
1+2+3=6
输入
rrrggb
输出
14
说明:
1+2(奖励1分)+3(奖励2分)+2+3(奖励1分)+3=14