1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| package main
import ( "fmt" "sort" "strconv" "strings" )
func largestNumber(nums []int) string { sort.Slice(nums, func(i, j int) bool { iStr := strconv.Itoa(nums[i]) jStr := strconv.Itoa(nums[j])
oneStr, _ := strconv.Atoi(iStr + jStr) twoStr, _ := strconv.Atoi(jStr + iStr)
return oneStr > twoStr })
var r string for _, num := range nums { r += strconv.Itoa(num) }
r = strings.TrimLeft(r, "0")
if r == "" { return "0" }
return r }
func main() { fmt.Println(largestNumber([]int{10, 2})) fmt.Println(largestNumber([]int{3, 30, 34, 5, 9})) fmt.Println(largestNumber([]int{3, 30, 34})) fmt.Println(largestNumber([]int{8308, 8308, 830})) fmt.Println(largestNumber([]int{111311, 1113})) fmt.Println(largestNumber([]int{34323, 3432})) fmt.Println(largestNumber([]int{0, 0})) }
|