Day of the Year LeetCode solution in C++

1
class Solution {
2
public:
3
bool leapyear(int year) {
4
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
5
}
6

7
int dayOfYear(string date) {
8
vector<int> v;
9
int ans = 0;
10
int n = date.length();
11
for (int i = 0; i < n; i++) {
12
if (date[i] >= '0' && date[i] <= '9') {
13
ans = ans * 10 + (date[i] - '0'); // subtract '0' to get the integer value
14
} else {
15
v.push_back(ans);
16
ans = 0;
17
}
18
}
19
v.push_back(ans); // add the last value to the vector
20
if (v.size() != 3) return -1; // error handling for invalid input
21
int year = v[0];
22
int month = v[1];
23
int day = v[2];
24
if (month == 1) return day;
25
if (month == 2) return 31 + day;
26

27
if (month == 3) return leapyear(year) ? 60 + day : 59 + day;
28
if (month == 4) return leapyear(year) ? 91 + day : 90 + day;
29
if (month == 5) return leapyear(year) ? 121 + day : 120 + day;
30
if (month == 6) return leapyear(year) ? 152 + day : 151 + day;
31
if (month == 7) return leapyear(year) ? 182 + day : 181 + day;
32
if (month == 8) return leapyear(year) ? 213 + day : 212 + day;
33
if (month == 9) return leapyear(year) ? 244 + day : 243 + day;
34
if (month == 10) return leapyear(year) ? 274 + day : 273 + day;
35
if (month == 11) return leapyear(year) ? 305 + day : 304 + day;
36
if (month == 12) return leapyear(year) ? 335 + day : 334 + day;
37
return -1;
38
}
39
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0