写点什么

【LeetCode】一年中的第几天 Java 题解

作者:HQ数字卡
  • 2021 年 12 月 21 日
  • 本文字数:722 字

    阅读完需:约 2 分钟

题目描述

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


通常情况下,我们认为 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
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/day-of-the-year著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码

思路分析

  • 今天的算法每日一题是字符串处理题目,比较简单。我们首先应用到了 split 函数切分年月日。然后枚举每个月的天数,需要特殊处理的是,闰年的 2 月有 29 天。最后累加求和即为答案。实现代码如下:

通过代码

class Solution {    public int dayOfYear(String date) {        int ans = 0;        int[] monthDay = new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
String[] dateArr = date.split("-"); Integer currentYear = Integer.parseInt(dateArr[0]); Integer currentMonth = Integer.parseInt(dateArr[1]); Integer currentDay = Integer.parseInt(dateArr[2]);
if (currentYear % 4 == 0) { monthDay[2] = 29; } for (int i = 0; i < currentMonth; i++) { ans += monthDay[i]; }
ans += currentDay;
return ans; }}
复制代码

总结

  • 上述算法的时间复杂度是 O(n),空间复杂度是 O(1)

  • 坚持算法每日一题,加油!

发布于: 2 小时前阅读数: 5
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】一年中的第几天Java题解