1154.一年当中的第几天
一年中的第几天 - 力扣(LeetCode) (leetcode-cn.com)
//本道题的思路在于 需要统计本年 1 到 x月, x 月之前的天数 加上 本月 的天数
// 那么还得注意闰年的区分,二月的判断。
bool isLeepYear(int year)
{
return ( year % 4 == 0 && year % 100 || year % 400 == 0);
}
int strIn(char* str , int len)
{
int i ,sum = 0;
for( i =0 ; i < len; ++i)
{
sum = sum * 10 + ( str[i] - '0');//YYYY-MM-DD
}
return sum;
}
int dayOfYear(char * date){
int monthday[] = { 0,
31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31
};
int sumday[13], i;
int year, month, day;
year = strIn(date + 0, 4);//题干所要求的年,有四位
month = strIn(date + 5, 2); //从第五位开始到第六位是月的表示,如下同理
day = strIn(date + 8, 2);
monthday[2] = isLeepYear(year) ? 29 : 28; //在这判断二月的天数
sumday[0] = 0;
for (i = 1; i < month; ++i) {
sumday[i] = sumday[i - 1] + monthday[i];//累加1 到 x -1月的天数
}
return sumday[month - 1] + day;
}