Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
题目标签:Math
题目给了我们两个string a 和 b,让我们把这两个二进制 相加。
首先把两个string 的长度得到,然后从右向左 取 两个string 的 digit。
增设一个 carry = 0;
每一轮把 digit a + digit b + carry = sum:
新的 digit = sum % 2;
新的 carry = sum / 2;
注意当两个string 都走完时候,还要检查一下carry, 是否需要加上digit。
Java Solution:
Runtime beats 42.60%
完成日期:12/11/2017
关键词:Math
关键点:digit = sum % 2; carry = sum / 2
class Solution
{
public String addBinary(String a, String b)
{
StringBuilder sb = new StringBuilder();
int aLen = a.length() - 1;
int bLen = b.length() - 1;
int carry = 0; while(aLen >= 0 || bLen >= 0)
{
int sum = carry; if(bLen >= 0)
sum += b.charAt(bLen--) - '0';
if(aLen >= 0)
sum += a.charAt(aLen--) - '0'; sb.insert(0, sum % 2);
carry = sum / 2;
} // for last carry
if(carry != 0)
sb.insert(0, carry); return sb.toString();
}
}
参考资料:https://discuss.leetcode.com/topic/13698/short-ac-solution-in-java-with-explanation
LeetCode 题目列表 - LeetCode Questions List
题目来源:https://leetcode.com/