Leetcode 1154:一年中的第几天(超详细的解法!!!)
in leetcode with 0 comment

Leetcode 1154:一年中的第几天(超详细的解法!!!)

in leetcode with 0 comment

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

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

示例 1:

输入:date = "2019-01-09"
输出:9

示例 2:

输入:date = "2019-02-10"
输出:41

示例 3:

输入:date = "2003-03-01"
输出:60

示例 4:

输入:date = "2004-03-01"
输出:61

提示:

解题思路

这实际上是一个闰年的计算问题,所以和这个问题类似Leetcode 1118:一月有多少天(超详细的解法!!!)。将当月前的所有月的天加起来即可,其中要考虑哪个月分是不是二月的问题即可。

class Solution:
    def dayOfYear(self, date: str) -> int:
        Y, M, D = list(map(int, date.split("-")))    
        days, res = [31,28,31,30,31,30,31,31,30,31,30,31], D
        if Y % 400 == 0 or Y % 4 == 0 and Y % 100 != 0:
            days[1] += 1
        for i in range(M - 1):
            res += days[i]
        return res

pythonic的写法,我们可以使用pythondatetime轻松处理。

import datetime
class Solution:
    def dayOfYear(self, date: str) -> int:
        Y, M, D = list(map(int, date.split("-")))
        return int(datetime.date(Y, M, D).strftime("%j"))

我将该问题的其他语言版本添加到了我的GitHub Leetcode

如有问题,希望大家指出!!!

「如果我的文章对你有很大帮助,那么不妨~!」

coordinate

谢谢老板O(∩_∩)O~

使用微信扫描二维码完成支付

Responses