class Solution:
def maxScore(self, s: str) -> int:
n, res = len(s), 0
for i in range(1, n):
left_zero = 0
for j in range(i):
if s[j] == '0':
left_zero += 1
right_one = 0
for j in range(i, n):
if s[j] == '1':
right_one += 1
res = max(res, left_zero + right_one)
return resclass Solution:
def maxScore(self, s: str) -> int:
n = len(s)
left_zero = [0] * n
right_one = [0] * n
if s[0] == '0':
left_zero[0] = 1
for i in range(1, n):
left_zero[i] = left_zero[i - 1]
if s[i] == '0':
left_zero[i] += 1
if s[n - 1] == '1':
right_one[n - 1] = 1
for i in range(n - 2, -1, -1):
right_one[i] = right_one[i + 1]
if s[i] == '1':
right_one[i] += 1
res = 0
for i in range(1, n):
res = max(res, left_zero[i - 1] + right_one[i])
return resclass Solution:
def maxScore(self, s: str) -> int:
zero = 0
one = s.count('1')
res = 0
for i in range(len(s) - 1):
if s[i] == '0':
zero += 1
else:
one -= 1
res = max(res, zero + one)
return resclass Solution:
def maxScore(self, s: str) -> int:
# res = Max of all (left_zeros + right_ones)
# res = Max of all (left_zeros + (total_ones - left_ones))
# res = total_ones (constant) + Max of all (left_zeros - left_ones)
zeros = 0
ones = 0
if s[0] == '0':
zeros += 1
else:
ones += 1
res = float('-inf')
for i in range(1, len(s)):
res = max(res, zeros - ones)
if s[i] == '0':
zeros += 1
else:
ones += 1
return res + ones