給你一個(gè)由若干 0 和 1 組成的字符串 s ,請(qǐng)你計(jì)算并返回將該字符串分割成兩個(gè) 非空 子字符串(即 左 子字符串和 右 子字符串)所能獲得的最大得分偏陪。
「分割字符串的得分」為 左 子字符串中 0 的數(shù)量加上 右 子字符串中 1 的數(shù)量。
示例 1:
輸入:s = "011101"
輸出:5
解釋:
將字符串 s 劃分為兩個(gè)非空子字符串的可行方案有:
左子字符串 = "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
解釋:當(dāng) 左子字符串 = "00" 且 右子字符串 = "111" 時(shí),我們得到最大得分 = 2 + 3 = 5
示例 3:
輸入:s = "1111"
輸出:3
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/maximum-score-after-splitting-a-string
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有懦冰。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)灶轰,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
題解
按照分隔點(diǎn)分別進(jìn)行計(jì)算分隔點(diǎn)兩側(cè)的‘0’和‘1’的個(gè)數(shù)刷钢,分隔點(diǎn)i的范圍為[1,n-1]笋颤。
public int maxScore(String s) {
int ans = 0;
int n = s.length();
for (int i = 1; i < n; i++) {
int score = 0;
for (int j = 0; j < i; j++) {
if (s.charAt(j) == '0') {
score++;
}
}
for (int j = i; j < n; j++) {
if (s.charAt(j) == '1') {
score++;
}
}
ans = Math.max(ans, score);
}
return ans;
}