leetCode 67.Add Binary (二進位制加法) 解題思路和方法
阿新 • • 發佈:2019-02-08
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
思路:二進位制加法,比較簡單。程式碼如下:
public class Solution { public String addBinary(String a, String b) { int len = Math.max(a.length(),b.length()); char[] ch = new char[len + 1];//預防進位 int i = a.length() - 1; int j = b.length() - 1; //不考慮進位,全部相加 while(i >= 0 && j >= 0){ ch[len--] = (char) (a.charAt(i--) + b.charAt(j--) - '0'); } //餘下僅有一個還未加完 while(i >= 0){ ch[len--] = a.charAt(i--); } while(j >= 0){ ch[len--] = b.charAt(j--); } int k = 0;//進位 //處理進位 for(i = ch.length-1; i >=1; i--){ ch[i] = (char) (k + ch[i] - '0'); k = ch[i]/2; ch[i] = (char) (ch[i]%2 + '0'); } //判斷是否還有進位 ch[0] = (char) (k > 0 ? k +'0': '0'); //消除開頭的0 return new String(ch).replaceAll("^0", ""); } }