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()
}