题目描述:
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0 。
样例:
示例 1:
输入: a = "11", b = "1" 输出: "100" 示例?2:
输入: a = "1010", b = "1011" 输出: "10101"
提示:
每个字符串仅由字符 '0' 或 '1' 组成。 1 <= a.length, b.length <= 10^4 字符串如果不是 "0" ,就都不含前导零。
Java程序:
class Solution {
public String addBinary(String a, String b) {
int ap = a.length()-1;
int bp = b.length()-1;
StringBuilder res = new StringBuilder();
// c表示进位
int c = 0;
while (ap >= 0 || bp >=0) {
int n1 = ap < 0 ? 0 : Character.getNumericValue(a.charAt(ap));
int n2 = bp < 0 ? 0 : Character.getNumericValue(b.charAt(bp));
int sum = n1 + n2 + c;
c = sum >= 2 ? 1 : 0;
res.insert(0,String.valueOf(sum%2));
ap--;
bp--;
}
if (c == 1) {
res.insert(0,"1");
}
return res.toString();
}
}
|