67. 二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
提示:
- 每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。
- 1 <= a.length, b.length <= 10^4
- 字符串如果不是 “0” ,就都不含前导零。
解题思路
十进制字符串相加的变形
代码
class Solution {public String addBinary(String a, String b) {int n=a.length()-1,m=b.length()-1,c=0;StringBuilder sb=new StringBuilder();while(n>=0||m>=0){int f=n>=0?a.charAt(n)-'0':0;int s=m>=0?b.charAt(m)-'0':0;int cur=(f+s+c)%2;sb.append(cur);c=(f+s+c)/2;n--;m--;}if(c==1)sb.append(c);return sb.reverse().toString();}
}