(java)leetcode67 二進位制數求和 (Add Binary)
阿新 • • 發佈:2018-11-01
題目描述:
給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 1
和 0
。
示例1:
輸入: a = "11", b = "1"
輸出: "100"
示例2:
輸入: a = "1010", b = "1011"
輸出: "10101"
解題思路:
最直接的解法,從最低位開始讀取二進位制數的每一位,轉成int型,做加法,加法規則為逢2進1. 同時新建一個字串,將每位的計算結果新增進去。過程中可能會遇到兩個字串的位數不一樣,不夠的用0補上。最後把合成的字串反轉成我們需要的順序。
程式碼實現:
class Solution { public String addBinary(String a, String b) { StringBuilder sb=new StringBuilder(); //表示向前進一位 int pre=0; while(a.length()!=b.length()){ if(a.length()>b.length()) b="0"+b; else a="0"+a; } for(int i=a.length()-1;i>=0;i--){ int m=a.charAt(i)-'0'; int n=b.charAt(i)-'0'; int temp=m+n+pre; if(temp>=2){ sb.append(temp-2); pre=1; } else{ sb.append(temp); pre=0; } } if(pre==1) sb.append('1'); return sb.reverse().toString(); } }
本人才疏學淺,文中若有錯誤或有更好的方法,歡迎在評論中指出,共同進步。