[HJ73 计算日期到天数转换]

发布于:2022-12-03 ⋅ 阅读:(117) ⋅ 点赞:(0)

描述

根据输入的日期,计算是这一年的第几天。

保证年份为4位数且日期合法。

进阶:时间复杂度:O(n) ,空间复杂度:O(1)

输入描述:

输入一行,每行空格分割,分别是年,月,日

输出描述:

输出是这一年的第几天

示例1

输入:

2012 12 31

复制输出:

366

复制

示例2

输入:

1982 3 4

复制输出:

63

思路一:引入常量,判断年份

方法二:运用datetime模块,

  • 实现思路
    • datetime库中的strftime方法支持以天数的方式输出

    • 其中日期格式化符号%j就是天数表示

    • 但是这样输出的结果是从001到366为止的字符串

    • 我们还要从左边去掉所有的0才是最终的结果

  • 时间复杂度:O(1),对于某个固定的年份和月日时期,计算的代价很小,常量级别的时间代价就可以解决问题
  • 空间复杂度:O(1),只引入了常量级别的空间代价

 

 优化三:

while True:
    try:
        y, m, d = map(int, input().split())
        month = [31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31]        # 平年的月份
        if y % 400 == 0 or (y % 100 != 0 and y % 4 == 0):
            month[1] = 29                                              # 闰年的月份
        print(sum(month[:m-1]) + d)                                    # 统计时间
    except:
        break


网站公告

今日签到

点亮在社区的每一天
去签到