问题:
方法:
先把数字按首位数字归入不同列表,然后按首位数字从大到小拼接,如果首位数字相同,则比较两个数字不同先后顺序拼接的大小,最后如果结果的首位数字为0,则直接输出0
package com.eric.leetcode
class LargestNumber {
fun largestNumber(nums: IntArray): String {
val sb = StringBuilder()
val list = Array<MutableList<String>>(10) {
mutableListOf()
}
for (num in nums) {
val real = num.toString().first().toString().toInt()
list[real].add(num.toString())
}
for (arr in list.reversed()) {
if (arr.isNotEmpty()) {
arr.sortedWith(Comparator { o1, o2 -> (o2 + o1).compareTo(o1 + o2) }).forEachIndexed { index, str ->
sb.append(str)
}
}
}
if (sb.first() == '0') {
return "0"
}
return sb.toString()
}
}
有问题随时沟通