原题如下
67.二进制求和
2020年6月23日 每日一题
题解
方法一
模拟加法运算。
本思路java代码示例:
/*没有进位的时候记得进位归零
*作者@v7fgg
*执行用时 :8 ms, 在所有 Java 提交中击败了16.42%的用户
*内存消耗 :40.1 MB, 在所有 Java 提交中击败了7.69%的用户
*2020年5月25日 8:19
*/
class Solution {
public String addBinary(String a, String b) {
String nLong="";
String nShort="";
String ans="";
if(a.length()<=b.length()){
nLong=b;
nShort=a;
}
else{
nLong=a;
nShort=b;
}
int jinwei=0;
int he=0;
int chang=nLong.length()-1;
int duan=nShort.length()-1;
while(chang>=0){
if(duan>=0){
he=jinwei+(nLong.charAt(chang)-'0')+(nShort.charAt(duan)-'0');
}
else{
he=jinwei+(nLong.charAt(chang)-'0');
}
if(he>1){
he-=2;
jinwei=1;
}
else{
jinwei=0;//没有进位记得归零
}
ans=he+ans;
if(chang==0&&jinwei==1){
ans=1+ans;
}
chang--;
duan--;
}return ans;
}
}