給定一個由01構成的字串,判斷從中間分成兩部分,計算能構成的最大數值
阿新 • • 發佈:2020-09-08
對於字元或字串中的數字,轉化需要-48
下面程式碼其實沒什麼用
1 /** 2 * 給定一個由01構成的字串,判斷從中間分成兩部分,計算能構成的最大數值 3 * 4 * @author 康舒服冰紅茶 5 * 6 */ 7 public class MaxScoreAftSplStr { 8 9 /* 10 *計算一個01字串的轉化為10進位制的數值 11 */ 12 public static int valueOfBinStr(String s) { 13 int value = 0; 14 for(int i = 0, len = s.length(); i < len; i++) { 15 value += (s.charAt(i) - 48) << (len - i - 1); 16 // System.out.println(s.charAt(i)+" "+(len-i-1)); 17 // System.out.println(value); 18 } 19 return value; 20 } 21 22 /* 23 * 計算從i位後面分割時的值24 */ 25 public static int sumStr(String s,int i) { 26 String s1=String.copyValueOf(s.toCharArray(), 0, i); 27 String s2=String.copyValueOf(s.toCharArray(), i, s.length()-i); 28 29 30 return valueOfBinStr(s1)+valueOfBinStr(s2); 31 } 32 33 publicstatic int maxsumStr(String s) { 34 int max = sumStr(s, 1); 35 for(int i = 2;i<s.length();i++) { 36 int temp = sumStr(s, i); 37 max = max < temp?temp:max; 38 } 39 return max; 40 } 41 42 public static void main(String[] args) { 43 // System.out.println(new MaxScoreAftSplStr().valueOfBinStr("101011")); 44 String s = "011101"; 45 46 System.out.println(maxsumStr(s)); 47 } 48 }