10.长度第k长子串
给定一个字符串,只包含大写字母,求在包含同一字母的子串中
长度第K长的子串,相同字母只取最长的子串
输入:第一行 一个子串 1<len<=100 ,只包含大写字母
第二行为k的值
输出:输出连续出现次数第k多的字母的次数
例子:
输入
AABAAA
2
输出
1
同一字母连续出现最多的A 3次
第二多2次 但A出现连续3次
输入
AAAAHHHBBCDHHHH
3
输出
2
如果子串中只包含同一字母的子串数小于k,则输出-1
点击查看代码
import java.util.*;
public class Demo10 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String[] split = sc.nextLine().split("");
int k = Integer.parseInt(sc.nextLine());
HashMap<String,Integer> map = new HashMap<>();
String temp = split[0];
int count = 1;
map.put(temp, count);
//核心处理代码
for(int i = 1; i < split.length; i++){
temp = split[i];
if(temp.equals(split[i - 1])) count++;
else count = 1;
map.put(temp, map.containsKey(temp) ?
map.get(temp) > count ? map.get(temp) : count
: count);
}
Integer[] ints = new Integer[map.values().size()];
map.values().toArray(ints);
Arrays.sort(ints); //默认是升序排序
System.out.println(ints[ints.length - k]);
}
}
核心代码那一块蛮有意思的,相同字母只取最长的子串!