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])
相关推荐
水龙吟啸3 分钟前
数据结构与算法随机复习–Day1
数据结构·c++·算法
SilentSamsara9 分钟前
闭包的本质:Python 如何捕获自由变量
开发语言·python·青少年编程·pycharm
生成论实验室15 分钟前
《事件关系阴阳博弈动力学:识势应势之道》第八篇:认知与反思关系——探索、定位与延续
人工智能·算法·架构·知识图谱·创业创新
段一凡-华北理工大学22 分钟前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章10:实时预警机制:跑在问题前面!
网络·人工智能·python·知识图谱·高炉炼铁·工业智能体
YaraMemo37 分钟前
一文带你区分全局最优解和帕累托最优解
算法·5g·信息与通信·信号处理
小熊Coding40 分钟前
童年游戏冒险岛(Python版本)
python·游戏·pygame
白夜11171 小时前
C++(标签派发 Tag Dispatching)
开发语言·c++·笔记·算法
WJ.Polar1 小时前
Scapy基本应用
linux·运维·网络·python
YaraMemo1 小时前
数学优化问题中的三大转化:多目标转化为单目标,多变量转化为单变量,有约束转化为无约束
人工智能·算法·5g·信息与通信·信号处理
H_unique1 小时前
LangChain:调用工具Ⅲ
python·langchain