1422 分割字串的最大得分

2021-10-09 22:32:05 字數 1284 閱讀 1777

題目描述:

給你乙個由若干 0 和 1 組成的字串 s ,請你計算並返回將該字串分割成兩個 非空 子字串(即 左 子字串和 右 子字串)所能獲得的最大得分。

「分割字串的得分」為 左 子字串中 0 的數量加上 右 子字串中 1 的數量。

示例 1:

輸入:s = 「011101」

輸出:5

解釋:將字串 s 劃分為兩個非空子字串的可行方案有:

左子字串 = 「0」 且 右子字串 = 「11101」,得分 = 1 + 4 = 5

左子字串 = 「01」 且 右子字串 = 「1101」,得分 = 1 + 3 = 4

左子字串 = 「011」 且 右子字串 = 「101」,得分 = 1 + 2 = 3

左子字串 = 「0111」 且 右子字串 = 「01」,得分 = 1 + 1 = 2

左子字串 = 「01110」 且 右子字串 = 「1」,得分 = 2 + 1 = 3

示例 2:

輸入:s = 「00111」

輸出:5

解釋:當 左子字串 = 「00」 且 右子字串 = 「111」 時,我們得到最大得分 = 2 + 3 = 5

示例 3:

輸入:s = 「1111」

輸出:3

2 <= s.length <= 500

字串 s 僅由字元 『0』 和 『1』 組成。

方法1:

主要思路:

(1)定義陣列,從左到右統計到當前位置時,0和1的個數;

(2)然後對該統計陣列遍歷,找出這個過程可能的最大的分數,分數為當前位置下的0的個數,加上總的1的個數減去到當前位置時的1的個數,保留最大值即可;

class

solution

else

//統計

++pos;

while

(possize()

)else

++pos;

}//總的1的個數

int count_one=sign[pos-1]

.second;

pos=0;

int res=0;

//遍歷統計陣列,找出最大的分數

while

(possize()

-1)//返回結果

return res;}}

;

字串 簡單 1422 分割字串的最大得分

題目 給你乙個由若干 0 和 1 組成的字串 s 請你計算並返回將該字串分割成兩個 非空 子字串 即 左 子字串和 右 子字串 所能獲得的最大得分。分割字串的得分 為 左 子字串中 0 的數量加上 右 子字串中 1 的數量。示例 1 輸入 s 011101 輸出 5 解釋 將字串 s 劃分為兩個非空...

LeetCode1422 分割字串的最大得分

一.題目 題目 示例 二.方法一 暴力法 解題思路 解題 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 ...

1717 刪除子字串的最大得分

題目描述 給你乙個字串 s 和兩個整數 x 和 y 你可以執行下面兩種操作任意次。刪除子字串 ab 並得到 x 分。比方說,從 cabxbae 刪除 ab 得到 cxbae 刪除子字串 ba 並得到 y 分。比方說,從 cabxbae 刪除 ba 得到 cabxe 請返回對 s 字串執行上面操作若干...