【LeetCode】1154.一年中的第几天

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

示例 1:

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

示例 2:

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

提示:

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

思路分析:

1.首先根据读入的字符串获取年月日
2.判断该年是否为闰年,如果为闰年,2月有29天;否则2月有28天。
3.从该年的1月1日开始遍历,计算输入的日期是该年的第几天。

程序代码:

public class LC1154_一年中的第几天 {

    public static int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};

    public static void main(String[] args) {
        String date = "2000-12-04";
        System.out.println(dayOfYear(date));
    }

    public static int dayOfYear(String date) {
        
        //1.首先获取时间的年月日
        int year = Integer.valueOf(date.substring(0,4));
        int month = Integer.valueOf(date.substring(5,7));
        int day = Integer.valueOf(date.substring(8,10));

        //2.判断是闰年还是平年
        if(isLeap(year)) days[2] = 29;

        //3.得到是该年的哪一天
        int num_days = 0;
        for (int i=0;i<month;i++){
            num_days = num_days+days[i];
        }
        
        return num_days+day;
    }

    // 判断是否为闰年
    public static boolean isLeap(int year){
        if((year%4==0 && year%100!=0) || year%400==0)
            return true;
        return false;
    }
}

你可能感兴趣的:(LeetCode,leetcode,算法)