这道题完全可以看成是一个简单的加减算术题。
只是有两个需要处理的地方:
- 需要把输入的字符串转换成整数形式
- 关于闰年的二月比平年的二月多一天
将字符串转换成整数,如果是python的话,直接用int()就好,但是C++只能自己手动转换了,不过过程还是非常简单的。那月份举例:month = (data[i] - '0') * 10 + (date[i+1] - '0')
再来分析平闰年,闰年就是可以直接被400整除的年份,或者是可以被4整除但不能被100整除的年份,即year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)
class Solution {
public:
int dayOfYear(string s) { //原数据为date,但我为了简略,将date改为了s
int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//将每个月的天数存放在数组方便相加
int year = 0, mon = 0, day = 0,sum = 0;
year = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + (s[3] - '0');
mon = (s[5] - '0') * 10 + (s[6] - '0');
day = (s[8] - '0') * 10 + (s[9] - '0');
for(int i = 1; i < mon; ++ i) {
sum += days[i];
if(i == 2) {
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) sum ++;
}
}
sum += day;
return sum;
}
};