# 题目链接
# 题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 {3,32,321},则打印出这三个数字能排成的最小数字为 321323。
# 解题思路
1 数组排序,递增序列形式
2 Go排序主要就是比较当前两个数的大小 ,我们可以把要比较的两个数字拼接成一个整体, 看看谁大谁小 比如2和8 拼接就28和82。
func minNumber(nums []int) string {
sort.Slice(nums, func(i, j int) bool {
return compareNumber(nums[i],nums[j])
})
var res strings.Builder
for i:=0;i<len(nums);i++{
res.WriteString(fmt.Sprintf("%d",nums[i]))
}
return res.String()
}
func compareNumber(a,b int)bool{
str1 := fmt.Sprintf("%d%d",a,b)
str2 := fmt.Sprintf("%d%d",b,a)
if str1<str2{
return true
}
return false
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19