5.3
当for循环中定义了多个变量的时候,不能这样写:
for(i = m-1,j = n-1; i>=0,j>=0;i--,j--)
应该这样写:
for(i = m-1,j = n-1; i>=0&&j>=0;i--,j--)
public class Solution {
/**
* @param a a number
* @param b a number
* @return the result
*/
public String addBinary(String a, String b) {
// Write your code here
int m = a.length();
if(m == 0){
return b;
}
int n = b.length();
if(n == 0){
return a;
}
String res = "";
int flag = 0;
int i=0,j=0;
for(i = m-1,j = n-1; i>=0&&j>=0;i--,j--){
int sum = Character.getNumericValue(a.charAt(i)) + Character.getNumericValue(b.charAt(j)) + flag;
switch(sum){
case 0:
res = "0"+ res;
flag = 0;
break;
case 1:
res = "1" + res;
flag = 0;
break;
case 2:
res = "0" + res;
flag = 1;
break;
case 3:
res = "1" +res;
flag = 1;
break;
default:
res = res;
flag =0;
break;
}
}
while(i>=0){
int sum = Character.getNumericValue(a.charAt(i)) + flag;
switch(sum){
case 0:
res = "0"+ res;
flag = 0;
break;
case 1:
res = "1" + res;
flag = 0;
break;
case 2:
res = "0" + res;
flag = 1;
break;
default:
res = res;
flag =0;
break;
}
i--;
}
while(j>=0){
int sum = Character.getNumericValue(b.charAt(j)) + flag;
switch(sum){
case 0:
res = "0"+ res;
flag = 0;
break;
case 1:
res = "1" + res;
flag = 0;
break;
case 2:
res = "0" + res;
flag = 1;
break;
default:
res = res;
flag =0;
break;
}
j--;
}
if(flag == 1){
res = Integer.toString(flag) + res;
}
return res;
}
}