不定期的算法打卡1

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;           
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值