想复杂了
用不到 hashmap排序
数组排序就可以了
学到了 hashmap 按值 排序方法
import java.util.Scanner;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int k = sc.nextInt();
sc.nextLine();
String words = sc.nextLine();
int [] freq = new int [26];
HashMap<Character, Integer> t = new HashMap<Character, Integer> ();
for(char c: words.toCharArray()) {
if(t.containsKey(c)) t.put(c,t.get(c)+1);
else t.put(c,1);
int index = c-'A';
freq[index]++;
}
//chushihua wanbi
ArrayList<Map.Entry<Character, Integer>> l = new ArrayList(t.entrySet());
Collections.sort(l, new Comparator<Map.Entry<?, Integer>>(){
public int compare(Map.Entry<?, Integer> o2, Map.Entry<?, Integer> o1) {
return o1.getValue().compareTo(o2.getValue());
}});
long sum = 0;
for (int i=0; i<l.size();i++){
if(l.get(i).getValue()<=k) {
k = k-l.get(i).getValue();
sum = sum + (long) l.get(i).getValue() *l.get(i).getValue();
}
else{
sum = sum + (long) k *k;
k=0;
}
}
System.out.println(sum);
}
}
}


京公网安备 11010502036488号