LeetCode1422 分割字串的最大得分

2021-10-09 06:17:47 字數 1304 閱讀 4816

一. 題目

題目

示例

二. 方法一: 暴力法

解題思路

解題**

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...