山东爱易网站建设工作室,阿迪达斯网站建设的总体目标,网站群 优点,杭州建设厅特种作业证LeetCode每日一题 2023年的最后一题 1154.一年中的第几天
1154. 一年中的第几天 - 力扣#xff08;LeetCode#xff09;
描述
给你一个字符串 date #xff0c;按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
示例 1#xff1a;
输入LeetCode
描述
给你一个字符串 date 按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
示例 1
输入date 2019-01-09
输出9
解释给定日期是2019年的第九天。示例 2
输入date 2019-02-10
输出41提示
date.length 10date[4] date[7] -其他的 date[i] 都是数字date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日
思路
根据给出的date获取年份(YYYY)月份(MM)天数(DD)
先按平年。即每年365天计算出每个月之前的天数然后再判断年份是否为闰年为闰年并且月份大于等于3则在天数上加1.
代码
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);// 每个月之前的总天数vectorint 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。 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;}
}