leetcode 1154. 一年中的第几天(C++、python)

给你一个按 YYYY-MM-DD 格式表示日期的字符串 date,请你计算并返回该日期是当年的第几天。

通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。

 

示例 1:

输入:date = "2019-01-09"
输出:9

示例 2:

输入:date = "2019-02-10"
输出:41

示例 3:

输入:date = "2003-03-01"
输出:60

示例 4:

输入:date = "2004-03-01"
输出:61

 

提示:

  • date.length == 10
  • date[4] == date[7] == '-',其他的 date[i] 都是数字。
  • date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日。

C++

class Solution {
public:
    int dayOfYear(string date) 
    {
        int year=atoi(date.substr(0,4).c_str());
        int month=atoi(date.substr(5,2).c_str());
        int day=atoi(date.substr(8,2).c_str());
        map tmp;
        tmp[1]=31;
        tmp[3]=31;
        tmp[4]=30;
        tmp[5]=31;
        tmp[6]=30;
        tmp[7]=31;
        tmp[8]=31;
        tmp[9]=30;
        tmp[10]=31;
        tmp[11]=30;
        if(1==month)
        {
            return day;
        }
        else if(2==month)
        {
            return tmp[1]+day;
        }
        else
        {
            int pre=0;
            if(year!=1900 && year%4==0)
            {
                pre=tmp[1]+29;
            }
            else
            {
                pre=tmp[1]+28;
            }
            for(int i=3;i

python

class Solution:
    def dayOfYear(self, date: str) -> int:
        year=int(date[0:4])
        month=int(date[5:7])
        day=int(date[8:])
        dic={1:31,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30}
        if 1==month:
            return day
        elif 2==month:
            return dic[1]+day
        else:
            pre=dic[1]
            if year!=1900 and 0==year%4:
                pre+=29
            else:
                pre+=28
            for i in range(3,month):
                pre+=dic[i]
            return pre+day
                    
        

 

你可能感兴趣的:(LeetCode)