题目
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
输入: [10,2]
输出: “102”
思路
- 基本类型变为字符串:
——基本类型的值+“ ”(空字符串)
——包装类的静态方法toString(参数) 【将对象转换为字符串】【对象.toString 只有对象可以调用这个,普通变量不可以】
——String类的静态方法valueOf(基本参数)【将对象转换为基本数据的值】【String.valueOf】 - 字符串变为基本类型:
——包装类的静态方法parseXXX(“数值类型的字符串”)public static int parseInt(String s)`:将字符串参数转换为对应的int基本类型。 - 排序规则:
若拼接字符串 x + y > y + x,则 x > y (x在前面更大,那么x更大。)
若 x + y < y + x ,则 x<y - 比较器写法
- 数字类型
-
listDevs.sort((Developer o1, Developer o2)->o1.getAge()-o2.getAge());
-
listDevs.sort((o1, o2)->o1.getAge()-o2.getAge());
-
- 其他类型
- listDevs.sort((Developer o1, Developer o2)->o1.getName().compareTo(o2.getName()));
- PriorityQueue queue = new PriorityQueue<>(nums.length,(a, b) -> b - a);【长度写不写都行】
代码
public String minNumber(int[] nums) {
String []str = new String[nums.length];
//转换为字符数组
for(int i = 0;i<nums.length;i++){
str[i] = String.valueOf(nums[i]);
}
Arrays.sort(str,(x, y) -> (x + y).compareTo(y + x));
StringBuilder res = new StringBuilder();
for(String s:str){
res.append(s);
}
return res.toString();
}
、