写一个java方法,将给定非负整数列表中的数子排列成最大数字作为字符事返回:{50,2、1,9)
时间: 2024-05-05 14:18:57 浏览: 151
MaxNumInts:编写一个函数,给出一个非负整数列表,将它们排列成尽可能大的数字
好的,我可以帮您编写这个Java方法。这里是代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] nums = {50, 2, 1, 9};
String ans = largestNumber(nums);
System.out.println(ans);
}
public static String largestNumber(int[] nums) {
String[] strNums = new String[nums.length];
for (int i = 0; i < nums.length; i++) {
strNums[i] = String.valueOf(nums[i]);
}
Arrays.sort(strNums, new Comparator<String>() {
public int compare(String s1, String s2) {
String leftRight = s1 + s2;
String rightLeft = s2 + s1;
return rightLeft.compareTo(leftRight);
}
});
StringBuilder sb = new StringBuilder();
for (String s : strNums) {
sb.append(s);
}
String ans = sb.toString();
if (ans.charAt(0) == '0') {
ans = "0";
}
return ans;
}
}
```
这个方法将给定的非负整数列表nums转换为字符串数组strNums。然后我们使用一个自定义比较器来对数组进行排序,该比较器比较任意两个字符串s1和s2的组合“s1+s2”和“s2+s1”的大小,并返回它们的比较结果。这意味着如果“s1+s2”大于“s2+s1”,则我们认为s1应该排在s2的前面。最后,我们将排序后的字符串连接起来形成结果字符串。另外,如果结果字符串以零开头,则返回零。希望这个方法能帮助到您。
阅读全文