def find_kth_longest_substring_length(s, k):
from collections import defaultdict
# 统计每个字母的最长连续长度
max_lengths = defaultdict(int)
n = len(s)
i = 0
while i < n:
current_char = s[i]
count = 1
while i + 1 < n and si 1='= current_char:' i count if count> max_lengths[current_char]:
max_lengths[current_char] = count
i += 1
# 提取所有字母的最长连续长度并排序
lengths = sorted(max_lengths.values(), reverse=True)
# 如果k大于长度列表的长度,返回0
if k > len(lengths):
return 0
# 返回第k长的长度
return lengths[k - 1]
# 获取用户输入
def get_input():
s = input("请输入一个只包含大写字母的字符串:")
k = int(input("请输入k的值:"))
return s, k
# 主程序
if __name__ == "__main__":
s, k = get_input()
result = find_kth_longest_substring_length(s, k)
print("第k长的子串长度是:", result)
这个问题可以通过以下步骤解决:
- 遍历字符串:统计每个字母连续出现的次数。
- 记录最大连续次数:对于每个字母,只记录其最长的连续次数。
- 排序并选择第k长的长度:将所有字母的最长连续次数排序,选择第k长的长度。