2014-04-01 25 views
5

Điều này tương tự như Calculating dates given two dates excluding weekend nhưng là một vấn đề khác.Java - chuyển đổi từ số ngày trong tuần sang số ngày

Câu hỏi đặt ra là "Tôi đã được giao nhiệm vụ N vào các ngày trong tuần trước. Bao nhiêu ngày trước đây?"

Vào thứ Sáu, 3 ngày trong tuần trước là 3 ngày trước. Vào Thứ Hai, 3 ngày trong tuần trước là 5 ngày trước.

Tôi có thể viết một giải pháp rất đơn giản bằng cách lặp lại. Tuy nhiên, nó tấn công tôi rằng nó có thể làm điều này như một hoạt động O (1). Câu trả lời gần nhưng sai là N + (7/5) N. Có lời khuyên nào không?

Trả lời

1

Đầu chuyển đổi số chẵn 5 ngày vào 7 tuần ngày, sau đó xử lý phần còn lại bằng cách thêm hai ngày nếu nó sẽ đi qua một ngày cuối tuần.

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

Rất đơn giản. Cảm ơn. – Jeremy

1

này nên làm việc

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

(Tôi đã không bao gồm các daysPerWeekday vì nó có vẻ như bạn đã có nó ("Ngày thứ sáu, 3 tuần trước là 3 ngày trước. Vào ngày thứ hai, 3 tuần trước 5 ngày trước. ") ...

+0

Bạn' thêm hàng tuần vào các ngày. – Brigham

+0

vòng. Khắc phục sự cố. –

Các vấn đề liên quan