对于字符或字符串中的数字,转化需要-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 }