二进制求和
作者:互联网
二进制求和
一、题目描述
给定二进制两个字符串返回它们的和用二进制表示。
实例
输入: a = "11", b = "1"
输出: "100"
输入: a = "1010", b = "1011"
输出: "10101"
二、题目分析
给定的是字符串,返回的也是字符串。但是计算要通过加法计算。
三、解题思路
倒序遍历两个字符串,并从最低位相加。遇2进1。将余数存入栈中。第二此循环的和是进的位在加上原本两个字符串位置上的数。这里还要注意两个字符串长度不一样时。还需遍历其中另一个。还需注意当进的位不为零时,需要将此位上的数字压入栈顶。
代码实现
public String addBinary(String a, String b) {
int n = a.length()-1;
int m = b.length()-1;
int carry = 0;
StringBuffer str = new StringBuffer();
while( n >=0 && m >=0){
int sum = carry;
sum += a.charAt(n--) - '0';
sum += b.charAt(m--) - '0';
carry = sum/2;
str.append(sum%2);
}
while( n >= 0 ){
int sum = carry += a.charAt(n--) - '0';
carry = sum/2;
str.append(sum%2);
}
while( m >= 0 ){
int sum = carry += b.charAt(m--) - '0';
carry = sum/2;
str.append(sum%2);
}
if(carry == 1){
str.append(carry);
}
return str.reverse().toString();
}
标签:二进制,sum,求和,int,字符串,str,carry,-- 来源: https://www.cnblogs.com/zjjtt/p/16663834.html