美文网首页
有n个正整数,将它们连成一排组成一个整数,输出其中最大的结果

有n个正整数,将它们连成一排组成一个整数,输出其中最大的结果

作者: sunnyxibei | 来源:发表于2018-09-07 16:50 被阅读13次

    language : kotlin

    /**
     * 设有n个正整数,将它们连成一排组成一个整数,请编程输出其中最大的结果。
     */
    object GetMaxNum {
    
        /**
         * 逻辑分析
         * 本质上是使用一种规律对已知的数组做一个排序
         *
         * 规则抽象:
         * a+b > b+a 则ab交换
         * 
         * 排序算法:
         * 都可以,这里用选择排序做一个示例
         */
        fun getMaxNumFromArray(array: IntArray): Long {
            for (i in 0 until array.size) {
                for (j in i until array.size) {
                    if (compareNum(array[j], array[i])) {
                        swap(array, i, j)
                    }
                }
            }
            val builder = StringBuilder()
            array.forEach {
                builder.append(it.toString())
            }
            return builder.toString().toLong()
        }
    
        private fun compareNum(a: Int, b: Int): Boolean {
            val aString = a.toString()
            val bString = b.toString()
            return (aString + bString).toInt() > (bString + aString).toInt()
        }
    
        private fun swap(arr: IntArray, i: Int, j: Int) {
            val temp = arr[i]
            arr[i] = arr[j]
            arr[j] = temp
        }
    }
    

    相关文章

      网友评论

          本文标题:有n个正整数,将它们连成一排组成一个整数,输出其中最大的结果

          本文链接:https://www.haomeiwen.com/subject/bnwcgftx.html