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.

Rust Solution

struct Solution;

impl Solution {
    fn day_of_year(date: String) -> i32 {
        let a: Vec<&str> = date.split_terminator('-').collect();
        let year = a[0].parse::<usize>().unwrap();
        let month = a[1].parse::<usize>().unwrap();
        let day = a[2].parse::<usize>().unwrap();
        let mut days: Vec<usize> = vec![31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
        let mut sum = 0;
        if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {
            days[1] += 1;
        }
        for i in 0..month - 1 {
            sum += days[i];
        }
        sum += day;
        sum as i32
    }
}

#[test]
fn test() {
    assert_eq!(Solution::day_of_year("2019-01-09".to_string()), 9);
    assert_eq!(Solution::day_of_year("2019-02-10".to_string()), 41);
    assert_eq!(Solution::day_of_year("2003-03-01".to_string()), 60);
    assert_eq!(Solution::day_of_year("2004-03-01".to_string()), 61);
}

Having problems with this solution? Click here to submit an issue on github.