蓝桥杯---分糖果

题目描述

最近暑期算法特训班的同学表现出色,她们的老师决定奖励她们,老师购买了n种不同种类的糖果,用小写的阿拉伯字母表示,每个糖果必须分给一个同学,并且每个同学至少要分到一个糖果,同学们的开心程度定义为 她们所分到的糖果组成的字符串s[i]的字典序,;老师希望同学们的开心程度尽量小,因此她要找到一种方案,使得所有糖果组成的 字符串中字典序最大的字符串尽量小,请输出字典序最小可能的Max[s[1],s[2].......s[x]]。

输入描述

第一行输入两个整数n和x,表示有n个糖果和x个同学

第二行输入一个长度为n的字符串S,s[i]表示第i个糖果的种类

数据保证:1 <= n <= 10^6 , 1 <= x <= n,  ,s[i] = ['a','z']

输出描述

输出一个字符串,为所有糖果组成的字符串中字典序最大的字符串最小的可能值

样例输入

6   2

caabdc

样例输出

abccd

import java.util.Arrays;
import java.util.Scanner;

public class 分糖果 {
        public static void main(String[]args) {
            Scanner scan=new Scanner(System.in);
            int n=scan.nextInt();
            int x=scan.nextInt();
            char[]s=scan.next().toCharArray();
            //将字符串变成字符数组
            Arrays.sort(s);
            //将数组s进行排序
            if(s[0]!=s[x-1]){//如果第一个字符不够x个人分
                System.out.print(s[x-1]);//最大字符串就是s[x-1]
            }else{//如果第一个字符够x个人分
                System.out.print(s[0]);//先打印个x[0]
                if(s[0] == s[n-1]) {//如果字符数组所有的都相同
                    for(int i=1;i 
  

你可能感兴趣的:(数据结构)