- 题目描述
- 解题思路
- 执行结果
题目描述
-
一年中的第几天
给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
示例 1:
输入:date = "2019-01-09" 输出:9 解释:给定日期是2019年的第九天。 示例 2:
输入:date = "2019-02-10" 输出:41
提示:
date.length == 10 date[4] == date[7] == '-',其他的 date[i] 都是数字 date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日
解题思路
法1
time类型转换+.yearday获取到该年的第n天
使用 time.Parse 函数将字符串解析为时间类型。
然后,我们可以使用 t.YearDay() 方法获取该时间的年份中的天数。
-
时间复杂度(O(1)) -
空间复杂度(O(n))
方法2
字符串分割
-
将字符串以-分割为字符串数组
-
维护一个数组记录每个月的天数
-
计算总天数,mm前面几个月的天数加上该月的天数day
-
返回结果
注意,再year%4==0的年份2月有29天,需要再一般情况的28天的情况下加上一天
执行结果
法1
time类型转换+.yearday获取到该年的第n天
func dayOfYear(date string) int {
layout := "2006-01-02"
t, err := time.Parse(layout, date)
if err != nil {
fmt.Println("Invalid date format")
return -1
}
return t.YearDay()
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 4 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 4.2 MB , 在所有 Go 提交中击败了 41.18% 的用户 通过测试用例: 10958 / 10958 炫耀一下:
本文由 mdnice 多平台发布