LeetCode之Largest Number(Kotlin)

问题:



方法:
先把数字按首位数字归入不同列表,然后按首位数字从大到小拼接,如果首位数字相同,则比较两个数字不同先后顺序拼接的大小,最后如果结果的首位数字为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()
    }
}

有问题随时沟通

具体代码实现可以参考Github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容