سال کا دن لیٹ کوڈ حل


مشکل سطح آرام سے
اکثر پوچھا جاتا ہے زیڈ اسکیلر
ریاضی

مسئلہ یہ بیان

"سال کا دن" کی پریشانی میں ہمیں ایک دیا جاتا ہے سٹرنگ جس میں YYYY-MM-DD کی شکل میں ایک تاریخ ہے۔ ہمارا کام اس تاریخ کے دن کا نمبر واپس کرنا ہے۔

اگر دی گئی تاریخ 2020-01-05 ہے۔ یہ 5 جنوری 2020 ہے جو 5 سال کا 2020 واں دن ہے۔ تو ، ہم 5 واپس کریں گے۔

مثال کے طور پر

date = "2019-01-09"
9

وضاحت:

 

جیسا کہ دی گئی مثال کی طرح ، دیئے گئے دن 9 جنوری 2019 ہیں۔ جو سال 9 کا 2019 واں دن ہے۔ لہذا جواب 9 ہے۔

یوم لیٹ کوڈ حل کے ل Appro اپروچ

چونکہ اسٹرنگ فارمیٹ میں ان پٹ دیا گیا ہے ، ہمیں انٹیجر ڈیٹا ٹائپ میں سٹرنگ سے تاریخ ، مہینہ اور سال نکالنے کی ضرورت ہے۔ لہذا ، ہم تار تقسیم کریں گے اور اس سے تاریخ ، مہینہ اور سال نکالیں گے۔

جیسا کہ ہر مہینے میں دن کی تعداد کی مختلف گنتی ہوتی ہے۔ لہذا ہر مہینے کے دن کی تعداد کو ٹریک کرنے کے لئے ہم ایک صف استعمال کریں گے اور ہر مہینے کے دن کی تعداد کو محفوظ رکھیں گے۔

اب ہمیں فروری کے مہینے کے دن کی تعداد سنبھالنے کی ضرورت ہے کیونکہ لیپ سال کے لئے اس میں 29 دن اور غیر لیپ سال کے لئے ، اس میں 28 دن ہوتے ہیں۔

ایک سال ایک لیپ سال ہے:

  1. اگر یہ 400 سے تقسیم ہے
  2. یہ 4 کے ذریعہ تقسیم ہوتا ہے لیکن 100 سے تقسیم نہیں ہوتا ہے۔

سال کا دن لیٹ کوڈ حل

سال کے دن کا حساب کتاب کرنے کے لئے جنوری سے ہر مہینے کے دن کی تعداد صرف دیئے گئے مہینہ -1 میں شامل کریں۔ دی گئی تاریخ سے دن کی تعداد شامل کریں۔ اس سے تاریخ کو سال کی تاریخ دی جائے گی۔

عمل

سال کے دن کے لئے C ++ کوڈ

#include <bits/stdc++.h> 
using namespace std; 
int dayOfYear(string dt) {
  int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int y = stoi(dt.substr(0, 4)), m = stoi(dt.substr(5, 2)), d = stoi(dt.substr(8));
  if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
  while (--m > 0) d += days[m - 1];
  return d;
}
int main() 
{ 
 string date="2019-01-09";
 int ans=dayOfYear(date);
 cout<<ans<<endl;
 return 0;
}
9

سال کے دن کے لئے جاوا کوڈ

import java.util.Arrays;
import java.util.Set ;
import java.util.HashSet;
public class Tutorialcup {
    public static int dayOfYear(String S) {
        int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        String[] s = S.split("-");
        int y = Integer.parseInt(s[0]);
        int m = Integer.parseInt(s[1]);
        int d = Integer.parseInt(s[2]);
        if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
        while (--m > 0) d += days[m - 1];
        return d;
    } 
  public static void main(String[] args) {
         String date="2019-01-09";
         int ans=dayOfYear(date);
        System.out.println(ans);
  }
}
9

یوم لیٹ کوڈ حل کا پیچیدہ تجزیہ

وقت کی پیچیدگی

مذکورہ کوڈ کی ٹائم پیچیدگی ہے O (1).

خلائی پیچیدگی

مذکورہ کوڈ کی جگہ کی پیچیدگی ہے O (1).

حوالہ جات