leetcode 1154. 一年中的第几天

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 1154. 一年中的第几天.


题目描述

  1. 一年中的第几天

给你一个字符串 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

字符串分割

  1. 将字符串以-分割为字符串数组

  2. 维护一个数组记录每个月的天数

  3. 计算总天数,mm前面几个月的天数加上该月的天数day

  4. 返回结果

注意,再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 多平台发布

你可能感兴趣的:(后端)