2014-04-01 11 views
5

Jest to podobne do Calculating dates given two dates excluding weekend, ale inny problem.Java - konwersja z liczby dni powszednich na liczbę dni

Pytanie brzmi: "Otrzymałem zadanie N w dni powszednie. Ile dni temu to było?"

W piątek, 3 dni robocze to 3 dni temu. W poniedziałek 3 dni temu jest 5 dni temu.

Potrafię napisać bardzo proste rozwiązanie poprzez iterację. Jednak wydaje mi się, że powinno to być możliwe jako operacja O (1). Dokładna, ale zła odpowiedź to N + (7/5) N. Jakieś wskazówki?

Odpowiedz

1

najpierw przekonwertować nawet numery od 5 dni do 7 dni tygodnia, a następnie obsługiwać pozostałą dodając dwa dni, jeśli będzie go na weekend.

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

Takie proste. Dzięki. – Jeremy

1

To powinno działać

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]; 
} 

(nie obejmują daysPerWeekday bo wydawało się, że trzeba było go ("w piątek, 3 dni tygodnia temu to 3 dni temu. W poniedziałek, 3 dni tygodnia temu wynosi 5 dni temu. ") ...

+0

You” dodawanie tygodni do dni – Brigham

+0

whoops. Naprawianie problemu. –

Powiązane problemy