ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python|Leetcode《1154》|一年中的第几天

2021-12-21 16:03:32  阅读:250  来源: 互联网

标签:第几天 Python 1154 31 30 int 天数 date


专栏《LeetCode|一刷到底》
打卡每天leetcode精选每日一题(尽量不断更!)

点击关注不迷路!!!

一、题目描述

  • 题目:一年中的第几天
  • 难度:简单
  • 描述:给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。
  • 示例1

输入:date = “2019-01-09”
输出:9

  • 示例2

输入:date = “2019-02-10”
输出:41

  • 示例3

输入:date = “2003-03-01”
输出:60

二、题目解析

本题的题意很明确计算出给定日期是一年内的第几天即可,需要注意的点如下:

  1. 进行是否闰年的判断(能够整除4的年份为闰年)
  2. 将字符串中的年月日通过切片的方式进行提取
  3. 将提取的字符串转换为可以进行计算的数值类型数据

三、解题代码

解法(一)
将每个月的天数存成字典,接下来通过切片计算已经度过的月份的天数+本月天数,最后判断如果在2月份之后且是闰年,天数需要加1。

class Solution:
    def dayOfYear(self, date: str) -> int:
        # 每个月的天数
        m_d = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        # 切片计算天数
        res = sum(m_d[0:int(date[5:7]) - 1]) + int(date[8:])
        # 计算闰年
        if int(date[0:4]) % 4 == 0 and int(date[5:7]) > 2:
            return res + 1
        else:
            return res

解法(二)
直接使用Python中的time模块进行操作(垃圾解法)

import time

class Solution:
    def dayOfYear(self, date: str) -> int:
        return time.strptime(date, "%Y-%m-%d")[-2]

标签:第几天,Python,1154,31,30,int,天数,date
来源: https://blog.csdn.net/qq_35164554/article/details/122062397

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有