1. 题目描述
2. 题目分析
- 简单的模拟,利用二进制进行模拟的加减。
- 两个字符串从后往前遍历,分别相加(sum)
- 若 sum == 0 则当前添加的为0
- 若 sum == 1 则当前添加的为1
- 若 sum == 2 则当前添加的为0且将sum的值 / 2(也就是当再次回来的时候,需要从1开始加)
3. 题目代码
class Solution { public static String addBinary(String a, String b) { int sum = 0; StringBuilder ans = new StringBuilder(); int n = Math.max(a.length(), b.length()); for (int i = 0; i < n; i++) { if (i < a.length()) { sum += (a.charAt(a.length() - 1 - i) - '0'); // 转换成整数 } if (i < b.length()) { sum += (b.charAt(b.length() - 1 - i) - '0'); } ans.append(sum % 2); sum = sum / 2; } System.out.println(ans.toString()); if (sum > 0) { ans.append('1'); } ans.reverse(); return ans.toString(); } }