アルゴリズム:leetcode 1154.1年の何日目
6948 ワード
アルゴリズム:leetcode 1154.1年の何日目タイトル説明 要点 コード 知識点 タイトルの説明
YYYY-MM-DD形式で日付を表す文字列dateをあげます.その日付がその年の数日目であることを計算して返してください.
通常、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
ヒント:
要点うるう年:普通うるう年:4で除かれ、100で除かれない年.世紀閏年:400の整数倍の西暦年です.ここでは普通の閏年で計算します. 考え方 まず文字列から年、月、日を抽出し、Int型に変換します.データでspit("-")分割により文字列配列が得られる.Integerを呼び出しますparseInt()はそれぞれyear,month,dayを得た. は、1年の各月の日数を1次元配列[]aで格納する(2月28). 以降、yearが閏年でmonth>=3の場合、resultはa[1]+...+a[month-1]+dayと判断した.そうでない場合、resultはいずれもa[1]+...+a[i-1]+dayである.
コード#コード#
インテリジェントポイント
1.spit()関数は、文字列を文字列配列に区切るために使用されます.2.閏年の判別方式
YYYY-MM-DD形式で日付を表す文字列dateをあげます.その日付がその年の数日目であることを計算して返してください.
通常、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
ヒント:
date.length == 10
date[4] == date[7] == '-', date[i] 。
date 1900 1 1 2019 12 31 。
要点
コード#コード#
class Solution {
public int dayOfYear(String date) {
String []time=date.split("-");
int num=0;
int year = Integer.parseInt(time[0]);
int month=Integer.parseInt(time[1]);
int day=Integer.parseInt(time[2]);
int []a = {31,28,31,30,31,30,31,31,30,31,30,31};
if(year%4==0&&year%100!=0){
for(int i = 1;i < month;i++){
num+=a[i-1];
}
if(month>=3)
num++;
num+=day;
return num;}
else
for(int i = 1;i < month;i++){
num+=a[i-1];
}
num+=day;
return num;
}
}
インテリジェントポイント
1.spit()関数は、文字列を文字列配列に区切るために使用されます.2.閏年の判別方式