一年中的第幾天
- 一、題目資訊
- 二、解題思路
- 三、代碼實作
- 四、其他題目分享

一、題目資訊
題目要求輸入一個字串,表示年月日,需要你輸出改天是這一年的第幾天,輸入輸入自己解決,

二、解題思路

假設我們輸入的是下面的字串,我們將它分為三部分,年份,月份,日,分成三個小的子字串,在用list存盤起來,然后創建一個用來計算每個月累加天數和的陣列,最后將年、月、日三個字串轉成數字,最后得到的天數就是陣列下標-1+天數,如果是閏年并且月份大于2月還需要+1.

圖示:

三、代碼實作
還有的細節我放在代碼的注釋中了
class Main{
public static int stringtoInt(String s){
int count =0;
for (int i = 0; i <s.length() ; i++) {
count=count*10+(s.charAt(i)-'0');
}
return count;
}
public static void main(String[] args) {
String s;
Scanner scanner=new Scanner(System.in);
s=scanner.nextLine();
//用陣列countDays統計每個月的累積天數,默認不是閏年
int []days={0,31,59,90,120,151,181,212,243,273,304,334,365};
List<String> list=new ArrayList<>();
String str="";
//按照“-”分割年月日
for (int i = 0; i <s.length() ; i++) {
if(s.charAt(i)=='-'){
list.add(str);
//如果等于“-”了就需要清空str,改保存下一部分了,上一部分都add到list里
str="";
}
else {
str+=s.charAt(i);
}
}
//整個字串都只有二個“-”經過上面的for遍歷,最后的str保存的就是天數
list.add(str);
//把上面的轉換成整形 第一個存入的str是年,接下來是月,日
int year=stringtoInt(list.get(0));
int month=stringtoInt(list.get(1));
int day=stringtoInt(list.get(2));
int ret=days[month-1]+day;
//如果這年是閏年 并且包含2月,就需要再加一天、
if(((year%4==0 && year%100!=0)|| year%400==0) && month>2)
{
ret++;
}
System.out.println(ret);
}
}
運行結果:


四、其他題目分享
復數乘法 嗶哩嗶哩2020校園招聘面試題詳解
劍指 Offer 67. 把字串轉換成整數
怎么把i am a student逆置成student a am i?面試題逆置字串講解
三種方法任君挑選 LeetCode_136只出現一次的數字
什么?動態規劃10行求出連續子陣列的最大和 劍指offer-42講解
劍指 Offer 39. 陣列中出現次數超過一半的數字 簡單易懂14行搞定 ,人人皆可會
二叉樹的層序遍歷原理+LeetCode真題練習
LeetCode 24:兩兩交換鏈表中的節點,1662. 檢查兩個字串陣列是否相等
LeetCode 21. 合并兩個有序鏈表
劍指 Offer 58 - II. 左旋轉字串的三種解法一起看看吧!!
字串“aabcccccaaa”壓縮成“a2b1c5a3“還要回傳更小的?力扣面試題 01.06. 字串壓縮講解
字串bit666keji123“中數字的個數?
找到不重復的數字進階版 空間復雜度O(1),時間O(n)平方,不能修改陣列內容,不能對陣列進行排序
LeetCode_231. 判斷一個數是否為2 的冪,與運算一行代碼解決
驗證尼科徹斯定理,即:任何一個整數m的立方都可以寫成m個連續奇數之和
劍指 Offer II 010. 和為 k 的子陣列 前綴和+哈希表優化講解
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/298706.html
標籤:其他
上一篇:git面試題總結
