题目链接

解析

使用数组保存闰年每个月的天数方便计算,之后再判断是否为平年,如果是且月份大于2,就要减去一天

代码

  1. class Solution {
  2. public:
  3. int dayOfYear(string date) {
  4. int dayTable[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  5. int year = stoi(date.substr(0, 4));
  6. int month = stoi(date.substr(5, 2));
  7. int day = stoi(date.substr(8, 2));
  8. int dayNum = day;
  9. for (int i = 1; i < month; i++) {
  10. dayNum += dayTable[i - 1];
  11. }
  12. if (month > 2) {
  13. if (year % 4 != 0 || ((year % 100 == 0) && (year % 400 != 0))) {
  14. dayNum--;
  15. }
  16. }
  17. return dayNum;
  18. }
  19. };