给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
示例 1:
**输入:** date = "2019-01-09"
**输出:** 9
**解释:** 给定日期是2019年的第九天。
示例 2:
**输入:** date = "2019-02-10"
**输出:** 41
提示:
date.length == 10
date[4] == date[7] == '-',其他的 date[i] 都是数字
date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日
方法一:直接计算
思路与算法
我们首先从给定的字符串 date 中提取出年 year,月 month 以及日 day。
这样一来,我们就可以首先统计到 month 的前一个月为止的天数。这一部分只需要使用一个长度为 12 的数组,预先记录每一个月的天数,再进行累加即可。随后我们将答案再加上 day,就可以得到 date 是一年中的第几天。
需要注意的是,如果 year 是闰年,那么二月份会多出一天。闰年的判定方法为:year 是 400 的倍数,或者 year 是 4 的倍数且不是 100 的倍数。
代码
[sol1-C++]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
classSolution { public: intdayOfYear(string date){ int year = stoi(date.substr(0, 4)); int month = stoi(date.substr(5, 2)); int day = stoi(date.substr(8, 2));
intans=0; for (inti=0; i < month - 1; ++i) { ans += amount[i]; } return ans + day; } }
[sol1-C#]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
publicclassSolution { publicintDayOfYear(string date) { int year = int.Parse(date.Substring(0, 4)); int month = int.Parse(date.Substring(5, 2)); int day = int.Parse(date.Substring(8));