1154.一年中的第几天
重点就是计算从年初当前月份,有几个闰月、30天的月、是否包括2月,以及2月时是否闰年
class Solution:
def dayOfYear(self, date: str) -> int:
s = date.split('-')
y, m, d = int(s[0]), int(s[1]), int(s[2])
# 闰月集合
set_31_day = set([1, 3, 5, 7, 8, 10, 12])
day_31 = 0 #闰月个数
day_30 = 0 #30天的月分个数
for i in range(m):
if i in set_31_day:
day_31 += 1 #看年初到当前月份有几个闰月
# 注意月份从1开始
if m == 1:
return d
elif m == 2:
return 31 + d
if m > 2:
day_30 = (m - 1) - 1 - day_31 #注意还要减去2月,要单独讨论
if (y % 4 == 0) and (y % 100 != 0) or (y % 400 == 0): #闰年2月有29天
return day_31 * 31 + day_30 * 30 + 29 + d
else: #非闰年28天
return day_31 * 31 + day_30 * 30 + 28 + d
最后更新于