leetcode_1154

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.

Solutions

  1. straight forward

  2. Similar to problem 1118

class Solution {
public:
    int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int dayOfYear(string date) {
        int y, m, d;
        sscanf(date.c_str(), "%d-%d-%d", &y, &m, &d);
        bool isleap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
        int res = d;
        for (int i = 0; i < m - 1; i++)
            res += days[i];
        if (isleap && m > 2) res++;
        return res;
    }
};

Last updated

Was this helpful?