题目要求:
给你一个由若干 0 和 1 组成的字符串s,请你计算并返回将该字符串分割成两个子字符串(即左子字符串和右子字符串, 子字符串允许为空)所能获得的最大得分。
已知分割字符串的得分规则如下:
左子字符串中:0得2分,1得1分
右子字符串中:1得2分,0得1分
子字符串为空则得0分
思路:
用了暴力解法,但在处理边界值的时候,因为在左子字符串中 0 得 2 分,右子字符串中 1 得 2 分,所以只要边界值是 0 就归到左边,边界值是 1 就归到右边。
具体代码实现如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
int max = 0,sum = 0;
for (int bound = 0; bound < str.length(); bound++) {
int leftSum = 0,rightSum = 0;
if(str.charAt(bound) == '0'){
for (int i = 0; i <= bound; i++) {
if(str.charAt(i) == '0'){
leftSum += 2;
}else{
leftSum += 1;
}
}
for (int i = bound + 1; i < str.length(); i++) {
if(str.charAt(i) == '0'){
rightSum += 1;
}else{
rightSum += 2;
}
}
sum = leftSum + rightSum;
if(sum > max)
max = sum;
}else{
for (int i = 0; i < bound; i++) {
if(str.charAt(i) == '0'){
leftSum += 2;
}else{
leftSum += 1;
}
}
for (int i = bound; i < str.length(); i++) {
if(str.charAt(i) == '0'){
rightSum += 1;
}else{
rightSum += 2;
}
}
sum = leftSum + rightSum;
if(sum > max)
max = sum;
}
}
System.out.println(max);
}
}