题目描述
给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第k长的子串的长度,相同字母只取最长的那个子串。
输入描述
第一行有一个子串(1<长度<=100),只包含大写字母。
第二行为k的值 搜索 评论 笔记
输出描述
输出连续出现次数第k多的字母的次数。
用例
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String string=scanner.nextLine();
int k=scanner.nextInt();
int result=InputResult(string,k);
System.out.println(result);
}
public static int InputResult(String inputStr,int k){
//con1
if (k<0)
return -1;
if (inputStr.length()<k)
return -1;
if (inputStr.length()==k)
return 1;
List<Character> tempList= new ArrayList<>();
Map<Character, Integer> countMap = new HashMap<>();
for (char c : inputStr.toCharArray()) {
countMap.put(c, countMap.getOrDefault(c, 0) + 1);
}
List<Integer> counts = new ArrayList<>(countMap.values());
Collections.sort(counts, Collections.reverseOrder());//根据count排序
int kthCount=counts.get(k-1);
return kthCount;
}
}