java - 我在几个数字中找到最大的数字 "make"的问题?

标签 java algorithm data-structures

示例输入:

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/

相关文章:

java - 如何以编程方式添加底部填充以跨越RelativeLayout中textView的内容

algorithm - 哲学排序思想

c# - 在特定分辨率下查找连续函数的最大值

C++ 映射行为不正常

C++ 一个一个地传递一个结构数组——如此简单,但我被难住了

c++ - 调试断言失败

java - 在运行时将 Hibernate 实体绑定(bind)到表

java - 从控制台读取字符串行

java - 通过在 android 中使用其 Jar 文件来使用 SherlockActionBar 库

algorithm - 感染者寻找算法