題目連結(jié):
題目意譯:
給定一字串 date 代表著一個格里曆日期,格式為 YYYY-MM-DD,回傳其為該年的第幾天。
限制:
date.length == 10
date[4] == date[7] == '-',且所有其他的 date[i] 為數(shù)字。
date 代表著介於 1900 / 1 / 1 到 2019 / 12 / 31 之間的日期。
範(fàn)例測資:
範(fàn)例 1:
輸入: date = "2019-01-09"
輸出: 9
解釋: 給定日期為 2019 年的第九天。
範(fàn)例 2:
輸入: date = "2019-02-10"
輸出: 41
範(fàn)例 3:
輸入: date = "2003-03-01"
輸出: 60
範(fàn)例 4:
輸入: date = "2004-03-01"
輸出: 61
解題思維:
已知每一個月的天數(shù):
一月有 31 天
二月有 28 天(先不論閏年)
三月有 31 天
四月有 30 天
五月有 31 天
六月有 30 天
七月有 31 天
八月有 31 天
九月有 30 天
十月有 31 天
十一月有 30 天
十二月有 31 天
先將 date 字串中的年 y、月 m 以及日 d 擷取出來。然後計算前 m - 1 個月總共有多少天,然後加上 d ,最後再判斷年分 y 是否為閏年,是的話要再加 1。此時的天數(shù)總和即為所求。
而某一年 y 是否為閏年,其判斷規(guī)則為
每四年一閏,但逢百年不閏,不過每四百年則又閏
因此寫成邏輯式為
(y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。