2023.12.31每日一题

LeetCode每日一题

2023年的最后一题

1154.一年中的第几天

1154. 一年中的第几天 - 力扣(LeetCode)

描述

给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。

示例 1:

输入:date = "2019-01-09"
输出:9
解释:给定日期是2019年的第九天。

示例 2:

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

提示:

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

思路

根据给出的date,获取年份(YYYY),月份(MM),天数(DD)

先按平年。即每年365天计算出每个月之前的天数,然后再判断年份是否为闰年,为闰年并且月份大于等于3,则在天数上加1.

代码

C++
C++ 复制代码
class Solution {
public:
    int dayOfYear(string date) {
        int year = getNum(0,4,date);
        int month = getNum(5,7,date);
        int day = getNum(8,10,date);

        // 每个月之前的总天数
        vector<int> daysBeforeMonth = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
        int days = daysBeforeMonth[month - 1] + day;
        if((year % 400 ==0 || (year % 4 == 0 && year % 100 != 0)) && month >= 3) days++;
        return days;
    }

    // 根据给定范围提取对应的数字
    int getNum(int start, int end , string date){
        int number = 0;
        for(int i = start; i < end; i++){
            number *= 10;
            number += date[i] - '0';
        }
        return number;
    }
};
Java

charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

java 复制代码
class Solution {
    public int dayOfYear(String date) {
        int year = getNum(0,4,date);
        int month = getNum(5,7,date);
        int day = getNum(8,10,date);

        // 每月之前的总天数
        int[] daysBeforeMonth = new int[]{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
        int days = daysBeforeMonth[month - 1] + day;
        if((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && month >= 3) days++;
        return days;
    }

    public int getNum(int start,int end, String date){
        int number = 0;
        for(int i = start; i < end; i++){
            number *= 10;
            number += date.charAt(i) - '0';
        }
    return number;
    }
}
相关推荐
爱吃生蚝的于勒11 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~15 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
王哈哈^_^40 分钟前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
星沁城42 分钟前
240. 搜索二维矩阵 II
java·线性代数·算法·leetcode·矩阵
脉牛杂德1 小时前
多项式加法——C语言
数据结构·c++·算法
legend_jz1 小时前
STL--哈希
c++·算法·哈希算法
kingmax542120081 小时前
初三数学,最优解问题
算法
一直学习永不止步1 小时前
LeetCode题练习与总结:赎金信--383
java·数据结构·算法·leetcode·字符串·哈希表·计数
小刘|2 小时前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
jjyangyou2 小时前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计