1. 程式人生 > >Leetcode 67. Add Binary 二進位制加法 解題報告

Leetcode 67. Add Binary 二進位制加法 解題報告

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(); } }