leetcode1154一年中的第几天

leetcode 1154 Day of the Year

Posted by BY on September 12, 2021

前言

好久没更新,下班水一题

正文

问题来源

本问题来自leetcode上的1154题。

问题描述

给你一个按 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

分析:

import "strings"
var months = []int{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
func dayOfYear(date string) int {
    strs := strings.Split(date, "-")

    year, _ := strconv.Atoi(strs[0])
    month, _ := strconv.Atoi(strs[1])
    day, _ := strconv.Atoi(strs[2])

    sum := 0
    leap := isLeapYear(year)
    for i := 1; i < month; i++ {
        if i == 2 && leap {
            sum += 29
            continue
        }
        sum += months[i]
    }
    sum += day
    return sum
}

func isLeapYear(year int) bool {
    return (year%4==0 && year%100 != 0) || (year % 400 ==  0)
}

总结:

勤思考。

结语

不管怎么样好好加油。