leetcode
来源:互联网 发布:时间分配软件 编辑:程序博客网 时间:2024/06/06 06:55
Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
Solution1:
public String addBinary(String a, String b) { if (a.length() > b.length()) { return addBinary(b, a); } int[] result = new int[b.length() + 1]; int gap = b.length() - a.length(); for (int i = a.length() - 1; i >= 0; i--) { addBinary(a.charAt(i), b.charAt(i + gap), result, i + gap + 1); } for (int i = gap - 1; i >= 0; i--) { addBinary(b.charAt(i), '0', result, i + 1); } StringBuilder sb = new StringBuilder(); for (int i : result) { if (!(sb.length() == 0 && i == 0)) sb.append(i); } return sb.length() == 0 ? "0" : sb.toString(); } private void addBinary(char c1, char c2, int[] result, int index) { int sum = (c1 - '0') + (c2 - '0') + result[index]; result[index] = sum % 2; result[index - 1] += sum / 2; }
Solution2:
better
public String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); int i = a.length() - 1; int j = b.length() - 1; int carry = 0; while (i >= 0 || j >= 0) { int sum = carry; sum += j >= 0 ? b.charAt(j--) - '0' : 0; sum += i >= 0 ? a.charAt(i--) - '0' : 0; sb.append(sum % 2); carry = sum / 2; } if (carry != 0) sb.append(carry); return sb.reverse().toString(); }
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- leetcode
- ]String... 与 String[]区别
- 【图像处理】PLUS XMP Tags
- 寒冰王座 HDU
- Ambari 架构设计
- leetcode
- artDialog4.0.5 弹出层
- Storm原理简介
- 常用正则表达式
- PAT L2-006. 树的遍历
- go的mac环境搭建,与简单编译。
- Flex的RemoteObject的用法
- spring-boot-mybatis-demo
- centos 安装nginx