143.Add Binary
题目:
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
.
输入字符串都是非空的,只包含字符1或0。
Example 1:
Input: a = "11", b = "1" Output: "100"
Example 2:
Input: a = "1010", b = "1011" Output: "10101"
解答:
1 class Solution { 2 public String addBinary(String a, String b) { 3 StringBuilder sb=new StringBuilder(); 4 int i=a.length()-1,j=b.length()-1,carry=0; 5 while(i>=0 || j>=0){ 6 int sum=carry; 7 if(i>=0) sum+=a.charAt(i--)-'0'; 8 if(j>=0) sum+=b.charAt(j--)-'0'; 9 sb.append(sum%2); 10 carry=sum/2; 11 } 12 if(carry==1) sb.append(carry); 13 return sb.reverse().toString(); 14 } 15 }
详解:
定义两个指针分别指向a和b的末尾,每次取出一个字符转为数字
定义进位carry=0,相加对2取余:当前位的数字,对2取商:当前进位的值
最后判断carry,如果为1的话,要在结果最前面加上一个1