[LeetCode每日一题] | 1154.一年中的第几天

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 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。

解题思路

核心是闰年判断,但要注意下面两个细节:

  1. 对于可以被 100 整除的年份(如 1900 年),需要判断其是否能被 400 整除;
  2. 如果月份是 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大梨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值