题目:http://codeforces.com/contest/1348/problem/C
感觉该题目不是特别难,对于我来说主要字典序不是特别懂,导致价高了该题的难度,自己在里面转了半天。
题意:将长度为n的字符串分为k份,使k个字符串字典序最大的是最小的情况
思路:
- 将该字符串放入char数组,排序
- 对于前k个如果不相同直接输出ch[k]即可
- 如果相同则判断剩下的所有字符是否相同,若不相同直接输出ch[0]+后面所有字符,反之平均放置去较长的字符串
AC代码:
package 练习;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(System.in);
for(int t=sc.nextInt();t>0;t--) {
int n=sc.nextInt();
int k=sc.nextInt();
String st=sc.next();
char ch[]=st.toCharArray();
Arrays.sort(ch);
StringBuilder str=new StringBuilder("");
if(ch[0]!=ch[k-1]) {
System.out.println(ch[k-1]);
}else {
str.append(ch[0]);
if(k<n&&ch[k]==ch[n-1]) {
for(int i=0;i<n/k-1;i++) {
str.append(ch[k]);
}
if(n%k!=0) {
str.append(ch[k]);
}
}else {
for(int i=k;i<n;i++) {
str.append(ch[i]);
}
}
System.out.println(str);
}
}
}
}