我的实验室教授提出的一个问题,题目是:* 在给定的整数列表/数组中查找最大的组合。* 即:
input: {10, 68, 75, 7, 21, 12}
stdout: 77568211210
my output : 75768211210
当前代码:
import java.util.*;
import java.lang.*;
public class classwork6
{
static Scanner in = new Scanner(System.in);
static void sort(String[] arr)
{
for(int i=0;i<arr.length;i++)
{
for(int j=i+1;j<arr.length;j++)
{
if(arr[i].compareTo(arr[j])<0)
{
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args)
{
int[] list = {10, 68, 75, 7, 21, 12};
String[] arr = new String[list.length];
for(int i=0;i<list.length;i++)
{
arr[i] = String.valueOf(list[i]);
}
sort(arr);
System.out.print(Arrays.toString(arr).replaceAll("[\\[\\], ]",""));
}
}
我的第一次尝试是简单地对数组排序,之后我很快发现777568211210〉75682112107
我最近的尝试是按字典顺序比较整数的字符串值。
1条答案
按热度按时间noj0wjuj1#
你的思路是对的,但想想看,哪个数字会给最终结果给予更多的好处:91或911。
很明显,较短的数字有更多的“可能性”得到较高的数字。因此,如果两个数字以相同的字符开始,你的排序应该优先考虑较短的数字