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])
相关推荐
攻城狮7号1 小时前
Python爬虫第19节-动态渲染页面抓取之Splash使用下篇
开发语言·爬虫·python·python爬虫
SophiaSSSSS1 小时前
无标注文本的行业划分(行业分类)算法 —— 无监督或自监督学习
学习·算法·分类
天天进步20151 小时前
Python项目--基于计算机视觉的手势识别控制系统
开发语言·python·计算机视觉
MarsBighead1 小时前
Pgvector+R2R搭建RAG知识库
python·ai·postgresql·rag·pgvector
明月清了个风1 小时前
数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形
笔记·学习·算法·动态规划
刃神太酷啦1 小时前
堆和二叉树--数据结构初阶(3)(C/C++)
c语言·数据结构·c++·算法·leetcode·深度优先·宽度优先
●VON1 小时前
杭电oj(1087、1203、1003)题解
算法·leetcode·职场和发展
良木林2 小时前
240424 leetcode exercises II
c语言·数据结构·算法·leetcode
早睡早起吧2 小时前
目标检测篇---faster R-CNN
人工智能·python·目标检测·计算机视觉·cnn
Alive~o.02 小时前
【网络应用程序设计】实验四:物联网监控系统
linux·网络·python·物联网·课程设计