一. 題目
題目
示例
二. 方法一: 暴力法
解題思路
解題**
def
maxscore
(self, s:
str)
->
int:
count =
0for index in
range(1
,len
(s))
: num1 = s[
0:index]
.count(
"0")
num2 = s[index:
len(s)
].count(
"1")
if count < num1 + num2:
count = num1 + num2
return count
分析時間複雜度: o(n^2)
空間複雜度: o(1)
三. 方法二: 動態規劃
解題思路
先計算出最初的score(左字串長度為1, 右側字串長度為n-1)
然後遍歷整個字串, 如果字元為0, score + 1,否則 score-1
然後之前的score進行比較, 如果比之前的結果大, 就替換
直到遍歷結束即可
解題**
def
maxscore
(self, s:
str)
->
int:
count = s[0]
.count(
"0")
+ s[1:
].count(
"1")
result = count
for i in
range(1
,len
(s)-1)
:if s[i]
=="0"
: count +=
1else
: count -=
1 result =
max(result, count)
return result
分析時間複雜度: o(n)
空間複雜度: o(1)
1422 分割字串的最大得分
題目描述 給你乙個由若干 0 和 1 組成的字串 s 請你計算並返回將該字串分割成兩個 非空 子字串 即 左 子字串和 右 子字串 所能獲得的最大得分。分割字串的得分 為 左 子字串中 0 的數量加上 右 子字串中 1 的數量。示例 1 輸入 s 011101 輸出 5 解釋 將字串 s 劃分為兩個...
leetcode 915 分割陣列
給定乙個陣列a,將其劃分為兩個不相交 沒有公共元素 的連續子陣列left和right,使得 在完成這樣的分組後返回left的長度。可以保證存在這樣的劃分方法。示例 1 輸入 5,0,3,8,6 輸出 3解釋 left 5,0,3 right 8,6 示例 2 輸入 1,1,1,0,6,12 輸出 4...
Leetcode 915 分割陣列
給定乙個陣列a,將其劃分為兩個不相交 沒有公共元素 的連續子陣列left和right,使得 在完成這樣的分組後返回left的長度。可以保證存在這樣的劃分方法。示例 1 輸入 5,0,3,8,6 輸出 3解釋 left 5,0,3 right 8,6 示例 2 輸入 1,1,1,0,6,12 輸出 4...