179. 最大数

image.png

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. "strconv"
  6. "strings"
  7. )
  8. type StrList []string
  9. func(s StrList)Len()int {
  10. return len(s)
  11. }
  12. func (s StrList)Less(i,j int)bool{
  13. return s[i]+s[j]>s[j]+s[i]
  14. }
  15. func(s StrList)Swap(i,j int){
  16. s[i],s[j] = s[j],s[i]
  17. }
  18. func largestNumber(nums []int) string {
  19. strs :=make(StrList,len(nums))
  20. for i,v:=range nums{
  21. strs[i] = strconv.Itoa(v)
  22. }
  23. sort.Slice(strs, func(i ,j int)bool {
  24. return strs[i]+strs[j]>strs[j]+strs[i]
  25. })
  26. s := strings.Join(strs,"")
  27. if s[0]=='0' {
  28. return "0"
  29. }
  30. return s
  31. }
  32. func main() {
  33. fmt.Println(largestNumber([]int{3,30,34,5,9}))
  34. fmt.Println(largestNumber([]int{0,0}))
  35. }

image.png