力扣
https://leetcode-cn.com/problems/add-binary/
难度简单674
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
提示:
- 每个字符串仅由字符
'0'或'1'组成。 1 <= a.length, b.length <= 10^4- 字符串如果不是
"0",就都不含前导零。
通过次数192,102提交次数353,460
class Solution {
public String addBinary(String a, String b) {
int lenA = a.length()-1;
int lenB = b.length()-1;
String ans = "";
int temp = 0;
int flag = 0;
while(lenA>=0 && lenB>=0)
{
if(a.charAt(lenA) == '1') temp++;
if(b.charAt(lenB) == '1') temp++;
temp +=flag;
if(temp==3)
{
temp = 1;
flag = 1;
}
else if(temp == 2)
{
temp = 0;
flag = 1;
}
else if(temp==1)
{
temp = 1;
flag = 0;
}
ans = ""+temp+ans;
temp =0;
lenA--;
lenB--;
// System.out.println("flag=="+flag);
}
while(lenA>=0)
{
if(a.charAt(lenA) == '1' && flag ==1)
{
temp = 0;
flag = 1;
}
else if(a.charAt(lenA) == '0'&& flag ==0)
{
temp = 0;
flag = 0;
}
else
{
temp = 1;
flag = 0;
}
ans = ""+temp+ans;
temp =0;
lenA--;
}
while(lenB>=0)
{
if(b.charAt(lenB) == '1' && flag ==1)
{
temp = 0;
flag = 1;
}
else if(b.charAt(lenB) == '0' && flag ==0)
{
temp = 0;
flag = 0;
}
else
{
temp = 1;
flag = 0;
}
ans = ""+temp+ans;
temp =0;
lenB--;
}
if(flag == 1) ans =""+flag+ans;
return ans;
}
}

1866

被折叠的 条评论
为什么被折叠?



