本题其实就是统计连续相同字母出现的最大长度,其实就是LeetCode的一道原题,
不太熟悉的可以参考这道题:3. 无重复字符的最长子串 - 力扣(LeetCode)
这道题面试也喜欢考,因为是双指针的经典题,使双指针去统计连续相同字母出现的最大长度之后,用一个哈希表或者一个数组记录,最终按照题目要求降序排列,输出第k多字母的次数
给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。
第一行有一个字符串(1<长度≤100000),只包含大写字母 第二行为 k 的值
输出连续出现次数第 k 多的字母的次数,当第k多的字母的次数不存在时,请输出-1
输入
AAAAHHHBBCDHHHH
3
输出
2
说明
同一字母连续出现的最多的是 A 和 H ,四次 第二多的是 H,3 次,但是 H 已经存在 4 个连续的,故不考虑下个最长子串是 BB,所以最终答案应该输出2.
输入
AABAAA
2
输出
1
说明:同一字母连续出现的最多的是 A,三次, 第二多的还是 A,两次,但A已经存在最大连续次数三次 故不考虑; 下个最长子串是 B,所以输出 1。
输入
ABC
4
输出
-1
说明:只含有 3 个包含同一字母的子串,小于 k,输出 −1。
输入
ABC
2
输出
1
说明:三个子串长度均为1,所以此时 k=1,k=2,k=3 这三种情况均输出 1。特此说明,避免歧义。