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 otherdate[i]
's are digitsdate
represents a calendar date between Jan 1st, 1900 and Dec 31, 2019.
Related Topics:
Math
// OJ: https://leetcode.com/problems/day-of-the-year/
// Author: github.com/lzl124631x
// Time: O(1)
// Space: O(1)
class Solution {
const int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool isLeap(int y) {
return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);
}
public:
int dayOfYear(string date) {
int y = stoi(date.substr(0, 4)), m = stoi(date.substr(5, 2)), d = stoi(date.substr(8));
return (m > 2 && isLeap(y)) + accumulate(begin(days), begin(days) + m - 1, 0) + d;
}
};