前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【题解】1154.一年中的第几天

【题解】1154.一年中的第几天

原创
作者头像
xlwang
发布2022-03-07 11:27:21
4680
发布2022-03-07 11:27:21
举报

题目链接

https://leetcode-cn.com/problems/day-of-the-year/

github链接

https://github.com/dzw001/leetcode_notebook

题目描述

题目难度:简单

给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 _现行公元纪年法_ 日期。请你计算并返回该日期是当年的第几天。

通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。

解题思路

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

  1. 对于可以被 100 整除的年份(如 1900 年),需要判断其是否能被 400 整除;
  2. 如果月份是 1 月或者 2 月,则闰年和平年没有区别;
代码语言:python
代码运行次数:0
复制
# Python3

# Author: duzhenwei

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目链接
  • github链接
  • 题目描述
  • 解题思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档