LeetCode之Largest Number(Kotlin)

问题:



方法:
先把数字按首位数字归入不同列表,然后按首位数字从大到小拼接,如果首位数字相同,则比较两个数字不同先后顺序拼接的大小,最后如果结果的首位数字为0,则直接输出0

package com.eric.leetcode

class LargestNumber {
    fun largestNumber(nums: IntArray): String {
        val sb = StringBuilder()
        val list = Array>(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()
    }
}

有问题随时沟通

具体代码实现可以参考Github

你可能感兴趣的:(LeetCode之Largest Number(Kotlin))