力扣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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69151.html