我要上岸


私信TA

用户名:dotcpp0730540

访问量:623

签 名:

等  级
排  名 36134
经  验 423
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:

你可能被题目吓到,题目要求 '?' 可以被随时替代,那也就是说明:'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 人评分

  评论区

步长为2的话,i 的初始值不应该是 1 吗?
2024-04-16 08:31:58
关键在于 看出来'00、11、0?、1?、?1、?0、??'都是正确的,01,10不行
2024-03-28 16:33:58
wok这是真想不到
2024-03-26 16:58:32
2024-03-21 12:16:25
  • «
  • 1
  • »