首页 > 试题广场 >

彩色宝石项链

[编程题]彩色宝石项链
  • 热度指数:18801 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一条彩色宝石项链,是由很多种不同的宝石组成的,包括红宝石,蓝宝石,钻石,翡翠,珍珠等。有一天国王把项链赏赐给了一个学者,并跟他说,你可以带走这条项链,但是王后很喜欢红宝石,蓝宝石,紫水晶,翡翠和钻石这五种,我要你从项链中截取连续的一小段还给我,这一段中必须包含所有的这五种宝石,剩下的部分你可以带走。如果无法找到则一个也无法带走。请帮助学者找出如何切分项链才能够拿到最多的宝石。

输入描述:
我们用每种字符代表一种宝石,A表示红宝石,B表示蓝宝石,C代表紫水晶,D代表翡翠,E代表钻石,F代表玉石,G代表玻璃等等,我们用一个全部为大写字母的字符序列表示项链的宝石序列,注意项链是首尾相接的。每行代表一种情况。


输出描述:
输出学者能够拿到的最多的宝石数量。每行一个
示例1

输入

ABCYDYE
ATTMBQECPD

输出

1
3
头像 重生之我要当分子
发表于 2024-12-29 16:00:27
解题思路 这是一个滑动窗口问题,需要: 找到包含所有五种宝石 (ABCDE) 的最短连续子串 考虑项链首尾相接的特性 剩余的宝石数量就是答案 解题步骤: 将字符串复制一遍处理首尾相接的情况 使用滑动窗口找到包含 ABCDE 的最短子串 如果找不到包含所有宝石的子串,返回 0 答案为原字符串长度 展开全文