67. Add Binary
来源:互联网 发布:淘宝开店认证电脑认证 编辑:程序博客网 时间:2024/05/02 19:18
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
二进制相加,使用数组存下每一位带carry的相加,最长长度不会超过a.length+b.length
取较短的位数相加,较短到较长的位数,长的串和carry相加,较长到a.length+b.length这段区间,和carry相加直到进位为0
public static String addBinary(String a, String b){int alen=a.length();int blen=b.length();int minlen=alen<blen?alen:blen;int maxlen=alen==minlen?blen:alen;int len=alen+blen;int[] num=new int[len];int carry=0;for(int i=0;i<minlen;i++){num[len-1-i]=a.charAt(alen-1-i)-'0'+b.charAt(blen-1-i)-'0'+carry;carry=num[len-1-i]/2;num[len-1-i]%=2;}for(int i=minlen;i<maxlen;i++){if(alen==maxlen)num[len-1-i]=a.charAt(alen-1-i)-'0'+carry;else {num[len-1-i]=b.charAt(blen-1-i)-'0'+carry;}carry=num[len-1-i]/2;num[len-1-i]%=2;}for(int i=maxlen;i<len;i++){num[len-1-i]+=carry;carry=num[len-1-i]/2;if(carry==0)break;num[len-1-i]%=2;}int start=-1;for(int i=0;i<len;i++)if(num[i]!=0){start=i;break;}if(start==-1)return "0";StringBuilder sb=new StringBuilder();for(int i=start;i<len;i++)sb.append(num[i]);return sb.toString();}
0 0
- [LeetCode]67.Add Binary
- LeetCode --- 67. Add Binary
- [Leetcode] 67. Add Binary
- [leetcode] 67.Add Binary
- 67. Add Binary
- 【leetcode】67. Add Binary
- 67. Add Binary
- [leetcode] 67.Add Binary
- [leetcode] 67. Add Binary
- 67. Add Binary
- 67. Add Binary
- 【Leetcode】67. Add Binary
- 67. Add Binary
- 67. Add Binary LeetCode
- 67. Add Binary
- 【LeetCode】67. Add Binary
- 67. Add Binary
- 67. Add Binary
- 经典算法之快速排序算法
- spring mvc返回类型
- 高德地图签名提示“INVALID_USER_SCODE”处理
- 由面向对象到设计模式
- web服务器集群-第三天
- 67. Add Binary
- java 实现以行为单位读取txt文件(1)
- Guava base -- CaseFormat
- java 实现以字节为单位读取文件(2)
- php apache mysql 64位
- PHPStorm中$_POST和$_FILES取不到值问题
- 初识dll,在VS2010平台上创建并使用dll(revised)
- 一个工作一年半的程序员的自述(四)
- Mac自带Apache搭建PHP开发环境(二)连接MySQL报错SQLSTATE[HY000] [2002] No such file or directory