给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 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.