1
class Solution {
2
public:
3
bool sumGame(string num) {
4
const int N = num.length();
5

6
int lDigitSum = 0;
7
int lQCount = 0;
8
int rDigitSum = 0;
9
int rQCount = 0;
10

11
for (int i = 0; i < N; ++i) {
12
if (isdigit(num[i])) {
13
if (i < N / 2) {
14
lDigitSum += (num[i] - '0');
15
} else {
16
rDigitSum += (num[i] - '0');
17
}
18
} else {
19
if (i < N / 2) {
20
++lQCount;
21
} else {
22
++rQCount;
23
}
24
}
25
}
26

27
// Case 0: Only digits (without '?')
28
if ((lQCount + rQCount) == 0) {
29
return (lDigitSum != rDigitSum);
30
}
31

32
// Case 1: Odd number of '?'
33
if ((lQCount + rQCount) % 2 == 1) {
34
return true;
35
}
36

37
// Case 2: Even number of '?'
38
int minQCount = min(lQCount, rQCount);
39
lQCount -= minQCount;
40
rQCount -= minQCount;
41
return (lDigitSum + 9 * lQCount / 2 != rDigitSum + 9 * rQCount / 2);
42
}
43
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0