12.填充

12.填充 - 蓝桥云课 (lanqiao.cn)

问题描述

有一个长度为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])
相关推荐
学编程就要猛几秒前
算法:2.复写零
java·数据结构·算法
TL滕1 分钟前
从0开始学算法——第二十一天(链表练习)
笔记·学习·算法
柒.梧.1 分钟前
CSS 基础样式与盒模型详解:从入门到实战进阶
人工智能·python·tensorflow
LYFlied2 分钟前
【每日算法】LeetCode238. 除自身以外数组的乘积
数据结构·算法·leetcode·面试·职场和发展
仰泳的熊猫3 分钟前
1154 Vertex Coloring
数据结构·c++·算法·pat考试
_OP_CHEN3 分钟前
【算法基础篇】(三十七)图论基础之单源最短路:从原理到实战,4 大算法彻底吃透!
算法·图论
a程序小傲5 分钟前
京东Java面试被问:垃圾收集算法(标记-清除、复制、标记-整理)的比较
java·算法·面试
free-elcmacom10 分钟前
机器学习高阶教程<9>从实验室到生产线:机器学习模型推理与部署优化实战指南
人工智能·python·机器学习
元亓亓亓12 分钟前
LeetCode热题100--118. 杨辉三角--简单
算法·leetcode·职场和发展
耶叶13 分钟前
查找算法学习总结2:代码分析篇
数据结构·学习·算法