问题描述
有一个长度为n的01串,其中有一些位置标记为 ?,这些位置上可以任意填充0或者1,请问如何填充这些位置使得这个01串中出现互不重叠的00和11子串最多,输出子串个数
输入格式
输入一行包含一个字符串
输出格式
输出一行包含一个整数表示答案
样例输入
1110?0
样例输出
import os
import sys
# 请在此输入您的代码
s=input()
n=len(s)
dp=[0]*n
for i in range(1,n):
if s[i]==s[i-1] or s[i]=='?' or s[i-1]=='?': #如果当前位置的字符与前一个位置的字符相同,或者当前位置或前一个位置为问号(?)
dp[i]=dp[i-2]+1 #i-2应该是因为要00/11 才算进子串数量
else: #如果当前位置的字符与前一个位置的字符不相同,且当前位置和前一个位置都不是问号
dp[i]=dp[i-1] #0,1变化,最长字串长度不发生变化,等于前一个长度
print(dp[-1])