VMware coding Challenge:Date of Weekday
这道题再次证明了这种细节的题目,画个图容易搞清楚
5 static int DateOfWeekday(int date, int weekday) { 6 int cur = date%7; 7 int res = 0; 8 int dif = 0; 9 if (weekday > 0) { 10 dif = 7*((weekday-1)/7) + (weekday%7-cur>0? weekday%7-cur : 7-(cur-weekday%7)); 11 res = date + dif; 12 } 13 else if (weekday < 0){ 14 weekday = Math.abs(weekday); 15 dif = 7*((weekday-1)/7) + (cur-weekday%7>0? cur-weekday%7 : 7-(weekday%7-cur)); 16 res = date - dif; 17 } 18 else res = date; 19 return res; 20 }
1 static int DateOfWeekday(int date, int weekday) { 2 int cur = date % 7; 3 int res; 4 if (weekday == 0) return date; 5 else if (weekday > 0) { 6 if (weekday % 7 > cur) res = date + weekday % 7 - cur; 7 else res = date + 7 - (cur - weekday % 7); 8 res = res + 7*((weekday-1)/7); 9 } 10 else { 11 if (Math.abs(weekday % 7)<cur) res= date - cur - weekday % 7; 12 else res = date - 7 - cur - weekday%7; 13 res = res - 7*((Math.abs(weekday)-1)/7); 14 } 15 return res; 16 }