import java.util.Objects; class Solution { public String addBinary(String a, String b) { if (Objects.isNull(a)) { return b; } if (Objects.isNull(b)) { return a; } char[] s1 = a.toCharArray(); char[] s2 = b.toCharArray(); char[] result = new char[Math.max(s1.length, s2.length)]; int i = s1.length - 1; int j = s2.length - 1; int size = result.length; int carry = 0; while (i >= 0 && j >= 0) { int sum = s1[i] - '0' + s2[j] - '0' + carry; carry = sum >> 1; sum = sum % 2; result[-- size] = (char) ('0' + sum); -- i; -- j; } while (i >= 0) { int sum = s1[i] - '0' + carry; carry = sum >> 1; sum = sum % 2; result[-- size] = (char) ('0' + sum); -- i; } while (j >= 0) { int sum = s2[j] - '0' + carry; carry = sum >> 1; sum = sum % 2; result[-- size] = (char) ('0' + sum); -- j; } if (carry == 1) { char[] newArray = new char[result.length + 1]; newArray[0] = '1'; System.arraycopy(result, 0, newArray, 1, result.length); return String.valueOf(newArray); } return String.valueOf(result); } }
LeetCode - 67. 二进制求和
猜你喜欢
转载自blog.51cto.com/tianyiya/2172786
今日推荐
周排行