1260. Day of the Year
Difficulty: Easy
Topics: Math
Similar Questions:
Problem:
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.
Solutions:
class Solution {
public:
int dayOfYear(string date) {
int year = 0;
for (int i = 0; i < 4; ++i) {
year = 10 * year + date[i] - '0';
}
int month = 10 * (date[5] - '0') + date[6] - '0';
int day = 10 * (date[8] - '0') + date[9] - '0';
int dayNum[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // non-leap year
bool leapYear = false;
if ((year % 100 == 0 && year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)) {
leapYear = true;
}
if (leapYear) {
dayNum[1] = 29;
}
int count = 0;
for (int i = 0; i < month - 1; ++i) {
count += dayNum[i];
}
return count + day;
}
};