Add Binary
来源:互联网 发布:自学javascript要多久 编辑:程序博客网 时间:2024/06/04 20:02
Problem:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
时间复杂度为O(max(n,m))。
Solution:
public class Solution {
public String addBinary(String a, String b) {
if(a==null||a.length()==0)
return b;
if(b==null||b.length()==0)
return a;
byte carry = 0;
int p = a.length(), q = b.length();
StringBuilder res = new StringBuilder();
while(p>0&&q>0)
{
p--;q--;
int tmp = a.charAt(p) - '0' + b.charAt(q) - '0' + carry;
if(tmp>1)
{
carry = 1;
res.insert(0, Integer.toString(tmp-2));
}
else
{
carry = 0;
res.insert(0, Integer.toString(tmp));
}
}
while(p>0||q>0)
{
p--;q--;
int tmp = (p>=0?a.charAt(p):'0') - '0' + (q>=0?b.charAt(q):'0') - '0' + carry;
if(tmp>1)
{
carry = 1;
res.insert(0, '0');
}
else
{
carry = 0;
res.insert(0, Integer.toString(tmp));
}
}
if(carry==1)
res.insert(0, '1');
return res.toString();
}
}
public String addBinary(String a, String b) {
if(a==null||a.length()==0)
return b;
if(b==null||b.length()==0)
return a;
byte carry = 0;
int p = a.length(), q = b.length();
StringBuilder res = new StringBuilder();
while(p>0&&q>0)
{
p--;q--;
int tmp = a.charAt(p) - '0' + b.charAt(q) - '0' + carry;
if(tmp>1)
{
carry = 1;
res.insert(0, Integer.toString(tmp-2));
}
else
{
carry = 0;
res.insert(0, Integer.toString(tmp));
}
}
while(p>0||q>0)
{
p--;q--;
int tmp = (p>=0?a.charAt(p):'0') - '0' + (q>=0?b.charAt(q):'0') - '0' + carry;
if(tmp>1)
{
carry = 1;
res.insert(0, '0');
}
else
{
carry = 0;
res.insert(0, Integer.toString(tmp));
}
}
if(carry==1)
res.insert(0, '1');
return res.toString();
}
}
0 0
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- xml
- openCV2 的精髓——深入讲解Mat原理(非如何使用)
- 我与C++设计模式(二十一)——迭代器模式
- Linux中的shift命令
- 【胡逼蛋砍】——上
- Add Binary
- 输入时间,输入下一秒时间
- html中怎么将标签左对齐,而文本框右对齐的方法
- struts学习之入门级
- Merge Two Sorted Lists
- 数组中的逆序对
- 黑马程序员------object-c面向对象_继承
- 得到
- 区分php的比较运算符:==和===