字符串价值
每次从最大的减一,这里我们用java中自定义的优先队列来实现
import java.util.*; public class Main { public static int StringValue(String str,int k) { int n=str.length(); int[] alpha=new int[26]; for(int i=0;i<n;i++) { alpha[str.charAt(i)-'a']++; } PriorityQueue<Integer> pq=new PriorityQueue<>((o1,o2)->{ return o2-o1;}); for(int i:alpha) { if(i!=0) pq.add(i); } int i=0; while(i<k) { int temp = pq.poll(); if(temp>1) pq.add(temp-1); i++; } int sum=0; while(!pq.isEmpty()) { int tmp=pq.poll(); sum+=tmp*tmp; } return sum; } public static void main(String[] args) { Scanner scan=new Scanner(System.in); String str=scan.nextLine(); int k=scan.nextInt(); System.out.println(Main.StringValue(str,k)); } }
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/10862433.html

浙公网安备 33010602011771号