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();}
}