华为OD机试】连续字母长度-python

博客介绍了如何使用Python解决一个华为在线开发者(OD)面试题,即找到字符串中第k长的仅包含一个字母的连续子串的长度。文章提供了题目描述、示例、代码实现以及关键知识点总结,强调了在处理这类问题时应注意的编程技巧和陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

题目描述
给定一个字符串:只包含大写字母:求在包含同一个字母的子串中,长度第k长的子串的长度;相同字母只取最长的那个子串。若子串中只包含同一个字母的子串数小于k;则输出-1.

输入描述:
第一行有一个字符串:只包含大写字母
第二行有一个数字:表示k的值
输出描述:
输出连续出现次数第k多的字母的次数

示例1:
输入
AAAAHHHBBCDHHHH
3
输出
说明
同一字母连续出现的最多的是A和H:4次;
第二多的是H:3次:但是H已经存在4个连续的了:故不再考虑;
下个最长的子串是BB:其长度为2:所以最终答案应该输出2

示例2:
输入
AABAAA
输出
1
说明
同一字母连续出现的最多的是A:3次;
第二多的还是A:两次:但是A已经出现过了:故不考虑;
第二个最长子串是B:它的长度是1:所以输出1

示例3:
输入
ABC
4
输出
-1
说明
只含有3个包含同一个字母的子串:小于k:输出-1

示例4:
输入
ABC
输出
1
说明
三个子串长度均为1:所以此时这三种情况均输出1

代码

def Contn_Alpha(alphabat, k):
    #如果K值长度大于字符串中不相同字母个数则直接返回-1
    if len(set([x for x in alphabat])) < k:
        ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值