2014-04-01 34 views
5

Questo è simile a Calculating dates given two dates excluding weekend ma un problema diverso.Java: conversione dal numero di giorni della settimana al numero di giorni

La domanda è "Mi è stato dato un compito N giorni feriali. Quanti giorni fa era questo?"

Il venerdì, 3 giorni fa fa 3 giorni fa. Il lunedì, 3 giorni feriali fa 5 giorni fa.

Posso scrivere una soluzione molto semplice iterando. Tuttavia, mi sembra che dovrebbe essere possibile farlo come un'operazione O (1). Una risposta vicina ma sbagliata è N + (7/5) N. Qualche consiglio?

risposta

1

prima convertire i numeri pari di 5 giorni in 7 settimane al giorno, quindi gestire il resto con l'aggiunta di due giorni se andrà in un fine settimana.

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

Così semplice. Grazie. – Jeremy

1

Questo dovrebbe funzionare

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

(non ho incluso l'daysPerWeekday perché sembrava avete avuto ("Su un Venerdì, 3 giorni della settimana fa è di 3 giorni fa. Su un Lunedi, 3 giorni della settimana fa è di 5 giorni fa. ") ...

+0

You' aggiungendo settimane ai giorni – Brigham

+0

whoops. Risolvere il problema. –

Problemi correlati