目前共有4篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:台灣正體▼
 
点击 回复
74 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)
 

本帖信息

点击数:74 回复数:3
评论数: ?
作者:
最后回复:
最后回复时间:2026-3-23 22:06
 
©2010-2026 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。