题目描述
给定一个字符串的数组strs,请找到一种拼接顺序,使得所有的字符串拼接起来组成的字符串是所有可能性中字典序最小的,并返回这个字符串。
输入描述:
输入包含多行,第一行包含一个整数n(1≤n≤10 ^ 5),代表字符串数组strs的长度,后面n行,每行一个字符串,代表strs[i](保证所有字符串长度都小于10)。
输出描述:
输出一行,包含一个字符串,代表返回的字典序最小的字符串。
示例1
输入
2
abc
de
输出
abcde
示例2
输入
2
b
ba
输出
bab
解法一:贪心
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int len = Integer.parseInt(br.readLine());
String[] arr = new String[len];
for(int i=0;i<len;i++){
arr[i] = br.readLine();
}
String res = getRes(arr);
System.out.println(res);
}
public static String getRes(String[] arr){
if(arr==null||arr.length==0) return null;
if(arr.length<2) return arr[0];
Arrays.sort(arr,new Comparator<String>(){
public int compare(String o1,String o2){
return (o1+o2).compareTo(o2+o1);
}
});
StringBuilder sb = new StringBuilder();
for(int i=0;i<arr.length;i++){
sb.append(arr[i]);
}
return sb.toString();
}
}