长大后想做什么?做回小孩!

0%

LeetCode——二进制求和

NO.67 二进制求和 简单

8G8PqU.png

思路一:逐位相加进位 这种题其实已经遇到很多了,之前的字符串相加、字符串相乘是一样的。只不过本题换成了二进制而已。

不需要考虑符号位,依然是逆序遍历从低位到高位逐位相加,记录进位情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
public String addBinary(String a, String b) {
int carry=0,len=Math.max(a.length(),b.length());
StringBuilder sb=new StringBuilder();
for (int i = 0; i < len; i++) {
int x=a.length()-i-1>=0?a.charAt(a.length()-1-i)-'0':0;
int y=b.length()-i-1>=0?b.charAt(b.length()-1-i)-'0':0;
int sum=x+y+carry;
carry=sum/2;
sb.append(sum%2);
}
if (carry>0)sb.append(carry);
return sb.reverse().toString();
}

本人菜鸟,有错误请告知,感激不尽!

更多题解和学习记录博客:博客github