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 other date[i]'s are digits
  • date 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;
    }
};

results matching ""

    No results matching ""