题解 | #把数组排成最小的数#
把数组排成最小的数
https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993
package main import ( "sort" "strconv" "strings" ) /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return string字符串 */ func PrintMinNumber(numbers []int) string { // write code here if len(numbers) == 0 { return "" } strNumbers := make([]string, len(numbers)) for i := 0; i < len(numbers); i++ { strNumbers[i] = strconv.Itoa(numbers[i]) } // 这道题最重要的解决怎么样组装的数字是最小的,按照什么顺序组装? // 如果我们能得到这个次序,直接将这个次序的数字拼接在一起就好了 // 只考虑首字符的大小不可靠,但是如果字符串 a 拼接 b 的得到的数字大于 b 拼接 a,那么肯定 b 应该排在 a 的前面 sort.SliceStable(strNumbers, func(i, j int) bool { return strNumbers[i]+strNumbers[j] < strNumbers[j]+strNumbers[i] }) var ret strings.Builder for i := 0; i < len(strNumbers); i++ { ret.WriteString(strNumbers[i]) } return ret.String() }