1154 一年中的第几天 leetcode

简介: 1154 一年中的第几天 leetcode

给你一个按 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 日。


   class Solution {

   public:

       int dayOfYear(string date) {

           int day=0;

           int y=atoi(date.substr(0,4).c_str());

           int m=atoi(date.substr(5,2).c_str());

           int d=atoi(date.substr(8,2).c_str());

           switch(m-1)

           {

                   case 11:day+=30;

                   case 10:day+=31;

                   case 9:day+=30;

                   case 8:day+=31;

                   case 7:day+=31;

                   case 6:day+=30;

                   case 5:day+=31;

                   case 4:day+=30;

                   case 3:day+=31;

                   case 2:day+=((!(y%4)&&y%100)||!(y%400))?29:28;

                   case 1:day+=31;    

           }

           return d+day;

       }  

   };//闰年的定义是:(能被4整除且不能被100整除)或者(能被400整除的数)

目录
相关文章
|
6天前
leetcode-1154:一年中的第几天
leetcode-1154:一年中的第几天
19 0
|
6天前
|
算法
leetcode-1185:一周中的第几天
leetcode-1185:一周中的第几天
30 0
|
11月前
|
Python
今天是今年的的第几天
今天是今年的的第几天
100 0
|
算法 Java 索引
《剑指offer》题解——week6
《剑指offer》题解——week6
35 0
《剑指offer》题解——week6
|
算法 Java 索引
《剑指offer》题解——week1
思路:定义一个哈希表,遍历一次数组,利用哈希表对每个元素进行标记。若当前元素被标记过了,则该元素重复。 **时间复杂度:**`O(n)` **方法二:原地交换** 主要思想是把每个数放到对应的位置上,即让 `nums[i] = i`。 前往后遍历数组中的所有数,假设当前遍历到的数是 `nums[i]=x`,那么: - 如果`x != i && nums[x] == x`,则说明 `x`出现了多次,直接返回 `x`即可; - 如果`nums[x] != x`,那我们就把 `x` 交换
53 0
《剑指offer》题解——week1
|
存储 机器学习/深度学习 算法
《剑指offer》题解——week7
《剑指offer》题解——week7
41 0
《剑指offer》题解——week7
|
Java
《剑指offer》题解——week3
《剑指offer》题解——week3
46 0
《剑指offer》题解——week3
|
机器学习/深度学习 存储 算法
《剑指offer》题解——week4
《剑指offer》题解——week4
92 0
《剑指offer》题解——week4
|
机器学习/深度学习 存储 算法
《剑指offer》题解——week2
由于需要对结果进行取余,导致`不能使用动态规划`,因为取模导致了dp的运算出现了问题。dp是通过最优子问题来计算出最终结果的,而取模之后就导致计算最优子问题出现了问题,计算出来的`dp[i-j]*j`表面上可能是最大的,但是`dp[i-j]`也是经过取模运算的,从而这会导致`dp[i]`不是由前面的最优子问题推出来的。
54 0
《剑指offer》题解——week2