java題目計算日期到天數轉換
阿新 • • 發佈:2022-03-05
描述
根據輸入的日期,計算是這一年的第幾天。 保證年份為4位數且日期合法。 進階:時間複雜度:O(n)\O(n),空間複雜度:O(1)\O(1)輸入描述:
輸入一行,每行空格分割,分別是年,月,日
輸出描述:
輸出是這一年的第幾天示例1
輸入:2012 12 31輸出:
366
示例2
輸入:1982 3 4輸出:
63
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4import java.util.HashMap; 5 6 /** 7 * 描述 8 * 根據輸入的日期,計算是這一年的第幾天。 9 * 保證年份為4位數且日期合法。 10 * 進階:時間複雜度:O(n)\O(n) ,空間複雜度:O(1)\O(1) 11 * 輸入描述: 12 * 輸入一行,每行空格分割,分別是年,月,日 13 * 14 * 輸出描述: 15 * 輸出是這一年的第幾天 16 */ 17 public class Main { 18 static HashMap<Integer, Integer> map = new HashMap<>();19 static { 20 map.put(1, 31); 21 map.put(3, 31); 22 map.put(4, 30); 23 map.put(5, 31); 24 map.put(6, 30); 25 map.put(7, 31); 26 map.put(8, 31); 27 map.put(9, 30); 28 map.put(10, 31); 29 map.put(11, 30); 30 map.put(12, 31);31 } 32 public static void main(String[] args) throws IOException { 33 final BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 34 String in; 35 while ((in = br.readLine()) != null) { 36 int sum = 0; 37 final String[] strArr = in.split(" "); 38 // 判斷是不是閏年 39 if (checkYear(Integer.parseInt(strArr[0]))) { 40 map.put(2, 29); 41 } else { 42 map.put(2, 28); 43 } 44 // 累計月份前的天數 45 int month = Integer.parseInt(strArr[1]); 46 for (int i = 1; i < month; i++) { 47 sum = sum + map.get(i); 48 } 49 int day = Integer.parseInt(strArr[2]); 50 sum = sum + day; 51 System.out.println(sum); 52 } 53 } 54 55 /** 56 * 判斷是不是閏年 57 * 閏年: 58 * (1)十年一閏百年不閏:即如果year能夠被4整除,但是不能被100整除,則year是閏年。 59 * (2)每四百年再一閏:如果year能夠被400整除,則year是閏年。 60 * @param year 61 * @return 62 */ 63 private static boolean checkYear(int year) { 64 if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { 65 return true; 66 } 67 return false; 68 } 69 }