1422. 分割字符串的最大得分

r囧r小猫 2023-10-04 09:33 92阅读 0赞

给你一个由若干 0 和 1 组成的字符串 s ,请你计算并返回将该字符串分割成两个 非空 子字符串(即 子字符串和 子字符串)所能获得的最大得分。

「分割字符串的得分」为 子字符串中 0 的数量加上 子字符串中 1 的数量。

示例 1:

  1. 输入:s = "011101"
  2. 输出:5
  3. 解释:
  4. 将字符串 s 划分为两个非空子字符串的可行方案有:
  5. 左子字符串 = "0" 右子字符串 = "11101",得分 = 1 + 4 = 5
  6. 左子字符串 = "01" 右子字符串 = "1101",得分 = 1 + 3 = 4
  7. 左子字符串 = "011" 右子字符串 = "101",得分 = 1 + 2 = 3
  8. 左子字符串 = "0111" 右子字符串 = "01",得分 = 1 + 1 = 2
  9. 左子字符串 = "01110" 右子字符串 = "1",得分 = 2 + 1 = 3

示例 2:

  1. 输入:s = "00111"
  2. 输出:5
  3. 解释:当 左子字符串 = "00" 右子字符串 = "111" 时,我们得到最大得分 = 2 + 3 = 5

示例 3:

  1. 输入:s = "1111"
  2. 输出:3

提示:

  • 2 <= s.length <= 500
  • 字符串 s 仅由字符 '0''1' 组成。

    package Solution1422;

    class Solution {

    1. public int maxScore(String s) {
    2. int max = 0;
    3. for (int i = 0; i < s.length() - 1; i++) {
    4. String l = s.substring(0, i + 1);
    5. String r = s.substring(i + 1, s.length());
    6. int countl = 0;
    7. int countr = 0;
    8. for (int j = 0; j < l.length(); j++) {
    9. if (l.charAt(j) == '0') {
    10. countl++;
    11. }
    12. }
    13. for (int k = 0; k < r.length(); k++) {
    14. if (r.charAt(k) == '1') {
    15. countr++;
    16. }
    17. }
    18. if (countl + countr > max) {
    19. max = countl + countr;
    20. }
    21. }
    22. return max;
    23. }
    24. public static void main(String[] args) {
    25. Solution same = new Solution();
    26. String s = "00";
    27. System.out.println(same.maxScore(s));
    28. }

    }

发表评论

表情:
评论列表 (有 0 条评论,92人围观)

还没有评论,来说两句吧...

相关阅读

    相关 得分

    得分 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^\_^ 题目描述 最近,科比总得分超过乔丹,科比球打的很