Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
- Example 1:
Input: a = “11”, b = “1”
Output: “100” - Example 2:
Input: a = “1010”, b = “1011”
Output: “10101”
解法
public String addBinary(String a, String b) {
int n=a.length()-1,m=b.length()-1;
int carry=0;
String res="";
while(n>=0||m>=0)
{
int p=n>=0?a.charAt(n--)-'0':0;
int q=m>=0?b.charAt(m--)-'0':0;
int sum=p+q+carry;
res=(char)(sum%2+'0')+res;
carry=sum/2;
}
return carry==1?(char)(1+'0')+res:res;
}
Runtime: 1 ms, faster than 100.00% of Java online submissions for Add Binary.
Memory Usage: 34.8 MB, less than 67.72% of Java online submissions for Add Binary.
這道题做的我晕头转向,一开始按常规做法一个一个加,进位一直判断不好,直接放弃了,这个做法比较简洁,更值得学习