二进制求和
一、题目
67. 二进制求和
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
示例 1:
输入: a = "11", b = "1"
输出:"100"
示例 2:
输入:a = "1010", b = "1011"
输出:"10101"
提示:
1 <= a.length, b.length <= 104
a 和 b 仅由字符 '0' 或 '1' 组成
- 字符串如果不是
"0" ,就不含前导零
二、题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public String addBinary(String a, String b) { StringBuilder ans = new StringBuilder(); int n = Math.max(a.length(), b.length()), pre = 0; for (int i = 0; i < n; ++i) { pre += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0; pre += i < b.length() ? (b.charAt(b.length() - 1 - i) - '0') : 0; ans.append((char) (pre % 2 + '0')); pre /= 2; } if (pre == 1) { ans.append(pre); } return ans.reverse().toString(); } }
|

三、总结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class AddBinary {
public static void main(String[] args) { String b = "1"; String a = "11"; System.out.println(addBinary(a, b)); }
public static String addBinary(String a, String b) { StringBuilder ans = new StringBuilder(); int n = Math.max(a.length(), b.length()), pre = 0; for (int i = 0; i < n; ++i) { pre += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0; pre += i < b.length() ? (b.charAt(b.length() - 1 - i) - '0') : 0; ans.append((char) (pre % 2 + '0')); pre /= 2; } if (pre == 1) { ans.append(pre); } return ans.reverse().toString(); } }
|