67. 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.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101''
意思是:输入两个二进制字符串,输出两个二进制相加后的结果的字符串。
思路是:两个二进制字符串从最后开始遍历,拿到每个char,可能是'1'或'0',两个字符串的char相互累加,由于'1'在ASCII对应为49,'0'为48,所以累加之前要-'0',最后,两个char计算结果可能是0到2,所以sum%2为当前的值,如果是2,还需要进一位,所以sum/2,然后在下次循环中加上。
class Solution {
public String addBinary(String a, String b) {
int aLen = a.length()-1;
int bLen = b.length()-1;
StringBuffer sb = new StringBuffer();
int temp = 0;
while(aLen >= 0 || bLen >= 0){
int sum = temp;
if(aLen >= 0){
sum += a.charAt(aLen) - '0';
aLen--;
}
if(bLen >= 0){
sum += b.charAt(bLen) - '0';
bLen--;
}
sb.append(sum%2);
temp = sum/2;
}
if(temp !=0 )
sb.append(1);
return sb.reverse().toString();
}
}
网友评论