Easy
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
Constraints:
date.length == 10
date[4] == date[7] == '-'
, and all other date[i]
’s are digitsdate
represents a calendar date between Jan 1st, 1900 and Dec 31th, 2019.class Solution {
fun dayOfYear(date: String): Int {
val monthDays = intArrayOf(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
val dateArr = date.split("-".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val year = dateArr[0].toInt()
val month = dateArr[1].toInt()
val day = dateArr[2].toInt()
var dayCount = 0
val leapYear = year % 4 == 0 && year % 100 != 0 || year % 400 == 0
for (i in 1 until month) {
dayCount += monthDays[i]
}
dayCount += day
if (leapYear && month > 2) {
dayCount++
}
return dayCount
}
}