給定兩個二進制字符串,返回他們的和(用二進制表示)。輸入爲非空字符串且只包含數字 1 和 0。
示例 1:
輸入: a = "11", b = "1"
輸出: "100"
//感想:今天作了好像有三題吧,如今基本都跳過hard了,不太願意去想,還看了併發的一些東西,看的真讓人頭大,全是一些源碼的東西,還有幾分鐘就要去鍛鍊了,想一想仍是寫篇水文吧,剛剛作完這題,基本不太難,很像那種相似的題目,這種類型的題目感受仍是挺多的,就是這種加法的鏈表的這種感受,就是會感受比較麻煩,由於通常這種題目加的類型都比較怪異,可能須要處理,好比兩個長度不同啊這種問題。併發
//思路:這道題我一開始想的是什麼兩個字符串的長度處理同樣,分別來慢慢細化,仍是以爲寫起來太麻煩,我就去看了一下答案,發現答案都是將字符串的長度給對齊,我以爲好low,不想這麼作,而後我本身以爲應該能夠,就寫了,確實要精簡不少,感受看上去比較舒服,就是當你越界的時候我就讓你爲0,用一個3目運算符就搞定了,仍是能夠的。app
下面是代碼:有什麼問題能夠給我留言,知道的必定給你解釋。ui
1 class Solution { 2 public String addBinary(String a, String b) { 3 StringBuilder res=new StringBuilder(); 4 int m=a.length(); 5 int n=b.length(); 6 int i=m-1; 7 int j=n-1; 8 int carry=0; 9 while(i>=0||j>=0) 10 { 11 12 int x=(i>=0)?a.charAt(i)-'0':0; 13 int y=(j>=0)?b.charAt(j)-'0':0; 14 i--; 15 j--; 16 int sum=x+y+carry; 17 res.append(sum%2); 18 carry=sum/2; 19 20 } 21 if(carry!=0) 22 res.append(carry); 23 res.reverse(); 24 return res.toString(); 25 26 } 27 }