題目描述:
給你乙個由若干 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 字串執行上面操作若干...