文章目录
- 题目描述
- 竖式模拟
- 转换为十进制计算
题目描述
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
示例 1:
输入:a = “11”, b = “1”
输出:“100”
示例 2:
输入:a = “1010”, b = “1011”
输出:“10101”
提示:
1 <= a.length, b.length <= 104
a 和 b 仅由字符 ‘0’ 或 ‘1’ 组成
字符串如果不是 “0” ,就不含前导零
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
竖式模拟
class Solution {
public String addBinary(String a, String b) {
StringBuilder ans=new StringBuilder();
int ca=0;//进位
for(int i=a.length()-1,j=b.length()-1;i>=0||j>=0;i--,j--){
int sum=ca;
sum+=i>=0?a.charAt(i)-'0':0;
sum+=j>=0?b.charAt(j)-'0':0;
ans.append(sum%2);
ca=sum/2;
}
ans.append(ca==1?ca:"");
return ans.reverse().toString();
}
}
转换为十进制计算
public static int parseInt(String s, int radix);
第一个参数为字符串,第二个参数为进制基数。
class Solution {
public String addBinary(String a, String b) {
return Integer.toBinaryString(Integer.parseInt(a,2)+Integer.parseInt(b,2));
}
}