1# Runtime: 173 ms (Top 90.14%) | Memory: 14.9 MB (Top 69.01%)2class Solution:3def sumGame(self, num: str) -> bool:4n = len(num)5q_cnt_1 = s1 = 06for i in range(7n // 28): # get digit sum and question mark count for the first half of `num`9if num[i] == "?":10q_cnt_1 += 111else:12s1 += int(num[i])13q_cnt_2 = s2 = 014for i in range(15n // 2, n16): # get digit sum and question mark count for the second half of `num`17if num[i] == "?":18q_cnt_2 += 119else:20s2 += int(num[i])21s_diff = s1 - s2 # calculate sum difference and question mark difference22q_diff = q_cnt_2 - q_cnt_123return not (24q_diff % 2 == 0 and q_diff // 2 * 9 == s_diff25) # When Bob can't win, Alice wins