LeetCode 1154. Day of the Year (
Given a string date representing a Gregorian calendar date formatted as YYYY-MM-DD, return the day number of the year.
Example 1:
Input: date = "2019-01-09"
Output: 9
Explanation: Given date is the 9th day of the year in 2019.
Example 2:
Input: date = "2019-02-10"
Output: 41
Example 3:
Input: date = "2003-03-01"
Output: 60
Example 4:
Input: date = "2004-03-01"
Output: 61
Constraints:
date.length == 10
date[4] == date[7] == '-', and all other date[i]'s are digits
date represents a calendar date between Jan 1st, 1900 and Dec 31, 2019.
Solution
class Solution:
def dayOfYear(self, date: str) -> int:
y, m, d = map(int, date.split("-"))
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if y % 400 == 0 or (y % 100 != 0 and y % 4 == 0):
days[1] = 29
return sum(days[:(m-1)]) + d
Explanation
Since days of each month is different and we need to consider if the year is leap year, we can simply create a list of days of each month. Then if the year is a leap year, we can update the days of February to 29. Finally we can use the month as index to sum all days up (don't forget d)