Leetcode 67. Add Binary 二進位制加法 解題報告
阿新 • • 發佈:2018-12-24
1 解題思想
給定以字串為形式表達的一個二進位制數,需要求加法後的值。
這道題是一個弱化版的高精度加法,整體來說和之前做題的方式很類似,注意加法結果可能比原來長一位
2 原題
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
3 AC解
public class Solution {
/**
* 處理好邊界。。今天這道題寫的太晚了。。寫的有點潦草,見諒
* **/
public String addBinary(String a, String b) {
char numa[]=a.toCharArray();
char numb[]=b.toCharArray();
int result[]=new int[Math.max(a.length(),b.length())+1];
int i=numa.length-1;
int j=numb.length-1;
int index;
int n1,n2;
int c=0;
while (i>=0 || j>=0){
n1=0;
n2=0;
if(i>=0)
n1=numa[i]-'0';
if(j>=0)
n2=numb[j]-'0';
result[Math.max(i,j)+1]=((n1+n2+c)%2);
c=(n1+n2+c)/2;
i--;
j--;
}
result[0]=c;
if (c==0)
index=1;
else index=0;
StringBuilder sb=new StringBuilder();
for(int k=index;k<result.length;k++){
sb.append(result[k]+"");
}
return sb.toString();
}
}