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])
相关推荐
2402_854808373 分钟前
Golang数组和切片有什么区别_Golang数组切片对比教程【通俗】
jvm·数据库·python
2401_865439634 分钟前
如何在 Go 中精确安装指定版本的模块
jvm·数据库·python
xiaotao13116 分钟前
01-编程基础与数学基石:Matplotlib & Seaborn
人工智能·python·matplotlib
zhangchaoxies17 分钟前
c++ rpc框架选择 grpc和thrift哪个更适合c++
jvm·数据库·python
脱氧核糖核酸__18 分钟前
LeetCode热题100——41.缺失的第一个正数(题解+答案+要点)
数据结构·c++·算法·leetcode·哈希算法
脱氧核糖核酸__18 分钟前
LeetCode热题100——73.矩阵置零(题目+题解+答案)
c++·算法·leetcode·矩阵
2301_8152795219 分钟前
怎么管理开启了审计日志的金融级数据库实例_合规访问控制
jvm·数据库·python
XS03010620 分钟前
Java 基础笔记(二)
java·笔记·python
Mr_Xuhhh22 分钟前
深入理解单链表的递归反转:从原理到实现
算法·leetcode·职场和发展
海寻山26 分钟前
Java 泛型 (Generic) 入门到精通:语法 + 原理 + 实战 + 避坑
java·windows·python