示例输入:
4
123 124 56 90
我要通过以任何可能的方式将这些数字中的每一个组合在一起,找到您可以获得的最大可能数字。
因此,这些数字的可能组合是 {1231245690、1241235690、5612312490、9012312456、9056124123 等},最大的数字是 9056124123。
我是这样想这个问题的:最大的数字将从集合中最大的最后一位数字开始。所以,这里最大的数字将以“9”开头,因此 90 是我关心的第一个数字。然后,我查看最后一位数字最大的集合的其余部分,即“5”,所以 56 是我关心的第二个数字。如果最大的最后一个数字是平局,我会评估倒数第二个数字,依此类推。
首先,让我知道我对问题的思考方式是否正确,如果是,我应该查看哪些结构/类型以实现它?这需要与位操作有关吗?因为我有点卡在那个部分。
最佳答案
您几乎走上了正确的道路。不需要位操作。 如下所示使用自定义字符串比较器函数对它们进行排序就足够了。
Collections.sort(inputArray, new Comparator < String > () {
public int compare(String a, String b) {
//if a = "80", b = "807"
String ab = a + b; // 80807
String ba = b + a; //80780
// now compare
return ab.compareTo(ba) > 0 ? -1 : 1;
}
});
稍后连接它们。
@Dawood ibn Kareem感谢您指出边缘情况。
关于java - 我在几个数字中找到最大的数字 "make"的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55015843/