解题思路:

你可能被题目吓到,题目要求 '?' 可以被随时替代,那也就是说明:'00、11、0?、1?、?1、?0、??'都是正确的,那我们只需要进行步长为2的遍历,对满足条件的进行计数就可以了


注意事项:
以用例'1110?0'为例,

首先步长为2,到达'10?0',这个时候,是如下代码的else情况,10不满足,

这个时候我们进行步长为1的跳跃,字符串变成'0?0',这种情况不管你是2个0还是3个0,都只有一个符合条件的串

假设我们遇到else条件,进行步长为2的跳跃是否也是可行呢?可以做个验证,剩下'?0',也是只有一个符合条件的串

倒数第二行的代码,+1、+2均可以。


参考代码:

s=input()

lens=len(s)

i=0

strs=['00','11','0?','1?','?0','?1','??']

count=0

while i<lens:

    if s[i-1:i+1] in strs:

        count+=1

        i+=2

    else:

        i+=1

print(count)


点赞(0)
 

0.0分

7 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

dotcpp0638329 9月前 回复TA
步长为2的话,i 的初始值不应该是 1 吗?
格斯 9月前 回复TA
关键在于 看出来'00、11、0?、1?、?1、?0、??'都是正确的,01,10不行
9月前 回复TA
wok这是真想不到
刘中佳 10月前 回复TA