1. 程式人生 > 實用技巧 >給定一個由01構成的字串,判斷從中間分成兩部分,計算能構成的最大數值

給定一個由01構成的字串,判斷從中間分成兩部分,計算能構成的最大數值

對於字元或字串中的數字,轉化需要-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 public
static 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 }