华为OD机试 Python【连续字母长度】

题目

给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。

输入描述
第一行有一个子串(1<长度<=100),只包含大写字母。
第二行为 k的值

输出描述
输出连续出现次数第k多的字母的次数。

用例

输入	
LALALAHAHAMAKABBBAKAA
2
输出
2

解题思路

首先遍历输入字符串,计算每个字符连续出现的次数并记录下来,然后将这些连续出现次数按照从大到小排序,最后返回第k大的连续出现次数。

代码

def get_kth_longest_substr_length(s, k):
    max_lengths 
### 华为OD Python 题库题目及答案 #### 题目一:字符串反转 给定一个只包含字母和空格的字符串 `s`,返回该字符串中单词顺序颠倒后的结果。注意保留原始单词内部字符的相对位置。 ```python def reverse_words(s: str) -> str: words = s.split() reversed_words = ' '.join(reversed(words)) return reversed_words ``` 此函数通过先分割再重组的方式实现了字符串内单词的逆序排列[^1]。 #### 题目二:数组中的重复数 在一个长度为 n 的整型数组 nums 中有且只有一个数字出现了两次而其他所有数字均不相同,请找出这个重复出现的数字。 ```python def find_duplicate(nums: list[int]) -> int: seen = set() for num in nums: if num in seen: return num seen.add(num) raise ValueError("No duplicates found.") ``` 这段代码利用集合的数据结构特性来高效查找列表内的唯一重复项[^2]。 #### 题目三:最长公共子序列(LCS) 给出两个字符串 text1 和 text2 ,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,则返回 0。 ```python def longest_common_subsequence(text1: str, text2: str) -> int: m, n = len(text1), len(text2) dp = [[0] * (n + 1) for _ in range(m + 1)] for i in range(1, m + 1): for j in range(1, n + 1): if text1[i - 1] == text2[j - 1]: dp[i][j] = dp[i - 1][j - 1] + 1 else: dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) return dp[m][n] ``` 动态规划方法被用来解决这个问题,在保持较低时间复杂度的同时能够处理较长输入串的情况[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgorithmHero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值