2014-04-01 22 views
5

Bu, Calculating dates given two dates excluding weekend'a benzer ancak farklı bir sorundur.Java - hafta içi gün sayısından gün sayısına dönüştürün

Soru şu: "N hafta içi bir görev verildim. Bu kaç gün önceydi?"

Bir cuma günü, 3 hafta önce önce 3 gün önce. Pazartesi günü, 3 hafta önce önce 5 gün önce.

Yineleyerek çok basit bir çözüm yazabilirim. Ancak, bunu bir O (1) operasyon olarak yapmanın mümkün olacağına beni vuruyor. Yakın fakat yanlış cevap N + (7/5) N. Herhangi bir ipucu?

cevap

1

İlk sonra iki gün eklenerek kalan kolu, 7 gün hafta içine 5 gün bile sayıda dönüştürmek.

int MONDAY = 1, TUESDAY = 2, WEDNESDAY = 3, THURSDAY = 4, FRIDAY = 5; 
int today = getToday(); 
int weeks = weekdays/5; 
int extraDays = weekdays % 5; 
int days = weeks * 7; 
if (today <= extraDays) { 
    days += 2; 
} 
days += extraDays; 
+0

Çok basit. Teşekkürler. – Jeremy

1

Bu, 3 hafta içi önce is 3 gün önce. Pazartesi günü, 3 hafta içi önce bir Cuma günü "(vardı gibi görünüyordu çünkü

static int days(int weekdays){ 
     int nweeks = weekdays/5; 
     int extra = weekdays%5; 
     int[] daysPerWeekday = new int[]{<Something based on which day it is>}; 
     return nweeks*7 + daysPerWeekday[extra]; 
} 

(ı daysPerWeekday içermiyordu çalışması gerekir 5 gün önce çekildi. ") ... bir hafta sonu boyunca devam edecek olursa

+0

You' haftalara günler ekliyor – Brigham

+0

whoops. Sorunu düzeltmek. –

İlgili konular