gpt4 book ai didi

algorithm - 按升序对 "d.mm"和 "dd.mm"日期进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 03:30:23 25 4
gpt4 key购买 nike

我有 var keys []string。键表示格式为 "D.MM""DD.MM" 的日期和月份。

例如:

1.02(2 月 1 日)- 2.02(2 月 2 日)- 1.03(3 月 1 日)- 3.02(2 月 3 日)- 31.12(12 月 31 日)

我需要按如下方式对键进行排序:

[ '1.02', '2.02', '3.02', '1.03', '31.12' ]

首先是月份,然后是月份中的几天。

我首先尝试将字符串解析为 float64 数字,因为我认为使用数字会更容易(请参阅评论),但它似乎最糟糕。

我怎样才能做到这一点?

最佳答案

我想您需要一个 Go 程序。检查this one :

package main

import (
"fmt"
"sort"
"strings"
)

type ByDay struct { sort.StringSlice }
func (a ByDay) Less(i, j int) bool {
dmi, dmj := strings.Split(a.StringSlice[i], "."), strings.Split(a.StringSlice[j], ".")
return dmi[1] < dmj[1] || dmi[1] == dmj[1] && dmi[0] < dmj[0]
}

func main() {
days := []string{"3.03", "3.02", "2.02", "3.01", "1.03", "1.02"}
sort.Sort(ByDay{days})
fmt.Println(days)
}

它打印[3.01 1.02 2.02 3.02 1.03 3.03]

我怀疑 ByDay 是最好的名字,你最好给它一个更具描述性的名字。

关于algorithm - 按升序对 "d.mm"和 "dd.mm"日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49979881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com