import java.util.*;
import java.util.stream.Collectors;
/**
* NC111 最大数
* @author d3y1
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 相似 -> NC270 把数组排成最小的数 [nowcoder]
* 相似 -> NC85 拼接所有的字符串产生字典序最小的字符串 [nowcoder]
*
* 最大数
* @param nums int整型一维数组
* @return string字符串
*/
public String solve (int[] nums) {
// return solution1(Arrays.stream(nums).boxed().toArray(Integer[]::new));
return solution2(Arrays.stream(nums).boxed().map(String::valueOf).collect(Collectors.toList()));
}
/**
* 排序: Integer[]
* @param nums
* @return
*/
private String solution1(Integer[] nums){
Arrays.sort(nums, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2){
return (String.valueOf(o2)+String.valueOf(o1)).compareTo(String.valueOf(o1)+String.valueOf(o2));
}
});
StringBuilder sb = new StringBuilder();
for(int num: nums){
sb.append(num);
}
String result = sb.toString();
// 去掉 前导0
if(result.startsWith("0")){
result = result.replaceFirst("^0+", "");
}
return "".equals(result)?"0":result;
}
/**
* 排序: List<String>
* @param nums
* @return
*/
private String solution2(List<String> nums){
Collections.sort(nums, (o1, o2) -> (o2+o1).compareTo(o1+o2));
StringBuilder sb = new StringBuilder();
for(String num: nums){
sb.append(num);
}
String result = sb.toString();
// 去掉 前导0
if(result.startsWith("0")){
result = result.replaceFirst("^0+", "");
}
return "".equals(result)?"0":result;
}
}