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])
相关推荐
小江的记录本几秒前
【大语言模型】大语言模型——核心概念(预训练、SFT监督微调、RLHF/RLAIF对齐、Token、Embedding、上下文窗口)
java·人工智能·后端·python·算法·语言模型·自然语言处理
坐吃山猪1 分钟前
Python04_序列和字符串
python
炘爚2 分钟前
LeetCode(两两交换链表中的节点)
算法·leetcode·链表
wsoz2 分钟前
Leetcode矩阵-day7
c++·算法·leetcode·矩阵
念越2 分钟前
算法每日一题 Day01|双指针解决移动零问题
java·算法·力扣
不想看见4043 分钟前
Merge k Sorted Lists 优先队列--力扣101算法题解笔记
笔记·算法·leetcode
_深海凉_5 分钟前
LeetCode热题100-合并区间
算法·leetcode·职场和发展
tang7451639627 分钟前
mac的ideal中调用driver = webdriver.Chrome() 启动不了的原因
chrome·python·macos
wuweijianlove9 分钟前
算法性能测试中的输入规模与边界影响的技术6
算法
MicroTech202511 分钟前
微算法科技(NASDAQ :MLGO)量子增强区块链联邦学习:基于量子拜占庭协议的技术革新
科技·算法·区块链