通过万岁!!!
- 题目:给你一个日期,格式为"yyyy-mm-dd",然后判断这是今年的第几天
- 思路:唯一难点就是闰年的判断。首先判断年份,然后将每个月的日期都记录在数组中,如果当前月份超过了,那就返回的结果+上这个月份的值
- 技巧:没啥技巧,找个数组记录月份。
伪代码
拆分日期,并转成int类型的
定义数组
判断是不是闰年,如果是闰年,那就将数组的第二个改成29
遍历月份,注意,这里截止到上个月
ans+=这个月份的天数
return ans+当前这个月的天数。
java代码
class Solution {
public int dayOfYear(String date) {
String[] dateStr = date.split("-");
int yyyy = Integer.parseInt(dateStr[0]);
int mm = Integer.parseInt(dateStr[1]);
int dd = Integer.parseInt(dateStr[2]);
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (yyyy % 4 == 0 && yyyy % 100 != 0 || yyyy % 400 == 0) {// 闰年
days[1]++;
}
int ans = 0;
for (int i = 0; i < mm - 1; i++) {
ans += days[i];
}
return ans + dd;
}
}
- 总结:题目不难,没啥可以总结的。这里的数组可以用map,但是数组更加方便。