• LeetCode 1154. 一年中的第几天


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

    思路:先判断在月份,将当前月份之前的月份天数和加起来,再加上当前月的日期也就是天数,再根绝闰年判断2月份的天数。

    月份加和时,可以按照倒序将一年中的月份的天数排列在数组中,找到相应的月份,依次加和,2月份为28天,再根据闰年判断是否加1。

    class Solution {
    public:
        int calcOfDay(int year,int month,int day){
            int mon[12]={30,31,30,31,31,30,31,30,31,28,31,0};//日期按照倒序从11月份排列,12月份加上当月日期就好
            int res=0;
            for(int i=12-month;i<12;i++)
                res+=mon[i];
            if((month>2)&&((year%4==0&&year%100!=0)||year%400==0))//当月份超过两个月且为闰年时,日期加一
                res++;
            res+=day;
            return res;
        }
        
        int dayOfYear(string date) {
           int year, month, day;
            string years = date.substr(0, 4);
            string months = date.substr(5, 2);
            string days = date.substr(8, 2);
            stringstream ss;
            ss << years;
            ss >> year;
            ss.clear();
            ss << months;
            ss >> month;
            ss.clear();
            ss << days;
            ss >> day;
            int res = calcOfDay(year, month, day);
            return res;
        }
    };

     string的substr用法sbustr(int index,int len);从index起始位置截取长度为len的字符串。

  • 相关阅读:
    JavaScript--事件绑定及深入(26)
    JavaScript--事件对象(25)
    JavaScript--事件入门(24)
    JavaScript--动态加载脚本和样式(23)
    JavaScript--DOM元素尺寸和位置(22)
    JavaScript--DOM操作表格及样式(21)
    JavaScript--DOM进阶(20)
    jQuery-瀑布流的取巧做法分享
    Less开发指南(二)- 基本语法
    less开发指南(一)- 小牛试刀
  • 原文地址:https://www.cnblogs.com/hhhhan1025/p/11521321.html
Copyright © 2020-2023  润新知