67. 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
//感想:今天做了好像有三题吧,现在基本都跳过hard了,不太愿意去想,还看了并发的一些东西,看的真让人头大,全是一些源码的东西,还有几分钟就要去锻炼了,想想还是写篇水文吧,刚刚做完这题,基本不太难,很像那种类似的题目,这种类型的题目感觉还是挺多的,就是这种加法的链表的这种感觉,就是会感觉比较麻烦,因为一般这种题目加的类型都比较怪异,可能需要处理,比如两个长度不一样啊这种问题。

//思路:这道题我一开始想的是什么两个字符串的长度处理一样,分别来慢慢细化,还是觉得写起来太麻烦,我就去看了一下答案,发现答案都是将字符串的长度给对齐,我觉得好low,不想这么做,然后我自己觉得应该可以,就写了,确实要精简很多,感觉看上去比较舒服,就是当你越界的时候我就让你为0,用一个3目运算符就搞定了,还是可以的。

下面是代码:有什么问题可以给我留言,知道的一定给你解释。

 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.
posted @ 2019-10-29 20:02  小路不会迷路  阅读(322)  评论(0编辑  收藏  举报