【Leetcode】67. 二进制求和

题目编号

67

67. 二进制求和

解题思路

之前在Java学习笔记中写到过位运算,这次在Leetcode中也遇到了,二进制只有1和0,所以将位运算加入其中,计算完一位后就将进位数移位,进行下一轮计算。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public String addBinary(String a, String b) {
if(a == null || a.length() == 0) return b; //
if(b == null || b.length() == 0) return a;

StringBuilder stb = new StringBuilder();
int i = a.length() - 1;
int j = b.length() - 1;

int c = 0; // 进位
while(i >= 0 || j >= 0) {
if(i >= 0) c += a.charAt(i --) - '0'; // 进位数与a相加
if(j >= 0) c += b.charAt(j --) - '0'; // 进位数与b相加
stb.append(c % 2);
c >>= 1; // 移位运算
}

String res = stb.reverse().toString(); // 字符串反转
return c > 0 ? '1' + res : res; //判断进位
}
}

【Leetcode】67. 二进制求和
http://liuminxuan.github.io/2020/05/03/Leetcode刷题笔记:移位运算“/
发布于
2020年5月3日
许可协议