题目要求:
给你几个由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 (publicstaticvoidmain (字符串[ ] args ) scannerscanner=newscanner ) system.in ); String str=scanner.nextLine (; int max=0,sum=0; for(intbound=0; bound str.length (; bound}{intleftsum=0,rightSum=0; if(str.Charat(bound )=='0' ) for ) intI=0; i=bound I ) if(str.Charat(I )=='0' ) { leftSum =2; }else{ leftSum =1; }for(intI=bound1; i str.length (; I ) if(str.Charat(I )=='0' ) { rightSum =1; }else{ rightSum =2; } } sum=leftSum rightSum; if(summax ) max=sum; (else ) for ) intI=0; i bound; I ) if(str.Charat(I )=='0' ) { leftSum =2; }else{ leftSum =1; }for(intI=bound; i str.length (; I ) if(str.Charat(I )=='0' ) { rightSum =1; }else{ rightSum =2; } } sum=leftSum rightSum; if(summax ) max=sum; }system.out.println(max ); }