
package mainimport ( "fmt" "sort" "strconv" "strings")type StrList []stringfunc(s StrList)Len()int { return len(s)}func (s StrList)Less(i,j int)bool{ return s[i]+s[j]>s[j]+s[i]}func(s StrList)Swap(i,j int){ s[i],s[j] = s[j],s[i]}func largestNumber(nums []int) string { strs :=make(StrList,len(nums)) for i,v:=range nums{ strs[i] = strconv.Itoa(v) } sort.Slice(strs, func(i ,j int)bool { return strs[i]+strs[j]>strs[j]+strs[i] }) s := strings.Join(strs,"") if s[0]=='0' { return "0" } return s}func main() { fmt.Println(largestNumber([]int{3,30,34,5,9})) fmt.Println(largestNumber([]int{0,0}))}
