问题
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.描述
题目大意为两个二进制字符串相加,以最多位的为准,位不够的低位补0,然后进行相加
代码
class Solution {
public String addBinary(String a, String b) {
int maxLen = Math.max(a.length(), b.length());
StringBuilder sb = new StringBuilder();
int carry = 0;
for (int i = 0; i < maxLen; i++) { //从右边开始逐位取出字符串 a、b 的字符值 tempA 和 tempB,如果长度不足,则用0替代
int tempA = a.length() > i ? a.charAt(a.length() - i - 1) - '0' : 0;
int tempB = b.length() > i ? b.charAt(b.length() - i - 1) - '0' : 0;
sb.insert(0, (tempA + tempB + carry) % 2); //在最左侧插入相加结果
carry = tempA + tempB + carry > 1 ? 1 : 0; //得到进位
}
if (carry == 1) sb.insert(0, 1); //如果最高位有进位,则最高位还要加一位 1
return sb.toString();
}
}
解释
这段代码是copy别人的,主要想进行记录StringBuilder的语法,在最左侧进行填充。
sb.insert(0, (tempA + tempB + carry) % 2);