67. 二進制求和

給定兩個二進制字符串,返回他們的和(用二進制表示)。輸入爲非空字符串且只包含數字 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 }

 

面是代碼:有什麼問題能夠給我留言,知道的必定給你解釋。
[Miàn shì dàimǎ: Yǒu shé me wèntí kěyǐ gěi wǒ liúyán, zhīdào de yīdìng gěi nǐ jiěshì.]
Face is the code: What is the problem you can give me a message, you must know the explanation.
相關文章
相關標籤/搜索