目前共有4篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
23 3
最多次数
見習魔法師 二級
1樓 發表于:2026-3-23 21:37

小蓝有一个字符串 ss,他特别喜欢由以下三个字符组成的单词:l,q,bl,q,b,任意顺序都可以,一共有 66 种可能:lqblqb、lbqlbq、qlbqlb、qblqbl、blqblq、bqlbql。

现在他想从 ss 中,尽可能切割出多个他喜欢的单词,请问最多能切割出多少个?单词指的是由若干个连续的字符组成的子字符串。

見習魔法師 二級
2樓 發表于:2026-3-23 21:38
输入格式

输入一行包含一个字符串 ss。

输出格式

输出一行包含一个整数表示答案。

样例输入

lqbblqblqlxqb

样例输出

3

 
見習魔法師 二級
3樓 發表于:2026-3-23 21:39
贪心:

对于固定长度的不重叠区间选择问题,从左到右尽早选择有效子串的贪心策略可以得到全局最优解。

证明:如果存在一个最优解没有选当前的有效子串,我们可以把后续的子串前移替换,不会减少总数量,因此贪心选择是最优的。

 
見習魔法師 二級
4樓 發表于:2026-3-23 22:06

import os

import sys


# 请在此输入您的代码

#读取字符串

#截取窗口

#判断是否,是则跳窗口,不是依次往后

s=input().strip()

n=len(s)

count=0

v_chars={'l','b','q'}

i=0

while i<=n-3:

  windous=s[i:i+3]

  if set(windous)==v_chars:

    i=i+3

    count=count+1

  else:

    i=i+1

print(count)


 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:23 回複數:3
評論數: ?
作者:
最後回復:
最後回復時間:2026-3-23 22:06
 
©2010-2026 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。