Tips:该专栏的题解整理在https://github.com/dzw001/leetcode_notebook,有需要的童鞋自取哦~
题目链接
https://leetcode-cn.com/problems/day-of-the-year/
题目描述
题目难度:简单
给你一个字符串 date
,按 YYYY-MM-DD
格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。
通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
解题思路
核心是闰年判断,但要注意下面两个细节:
- 对于可以被 100 整除的年份(如 1900 年),需要判断其是否能被 400 整除;
- 如果月份是 1 月或者 2 月,则闰年和平年没有区别;
# Python3
class Solution:
def dayOfYear(self, date: str) -> int:
# 拆分字符串
date = list(map(int, date.split('-')))
# 每个月的天数
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 按照平年计算天数
res = date[2]
for i in range(date[1] - 1):
res += days[i]
# 判断是否是平年,若是则直接返回,若否则先加 1 再返回
if date[1] < 3 or (date[0] % 100 == 0 and date[0] % 400 != 0) or (date[0] % 4 != 0):
return res
return res + 1
eturn res
return res + 1