67.二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1
和 0
。
示例 1:
1 2
| 输入: a = "11", b = "1" 输出: "100"
|
Solution
模仿手算,用一个变量来表示进位
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| 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'; if(j >= 0) c += b.charAt(j--) - '0'; stb.append(c % 2); c >>= 1; } String res = stb.reverse().toString(); return c > 0 ? '1' + res : res; } }
|