原题链接:蓝桥杯2023年第十四届省赛真题-填充
解题思路:
你可能被题目吓到,题目要求 '?' 可以被随时替代,那也就是说明:'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分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复