码迷,mamicode.com
首页 > 其他好文 > 详细

leetCode 67.Add Binary (二进制加法) 解题思路和方法

时间:2015-07-17 18:56:43      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:leetcode   二进制   

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

思路:二进制加法,比较简单。代码如下:

public class Solution {
    public String addBinary(String a, String b) {
        int len = Math.max(a.length(),b.length());
        char[] ch = new char[len + 1];//预防进位
        int i = a.length() - 1;
        int j = b.length() - 1;
        //不考虑进位,全部相加
        while(i >= 0 && j >= 0){
            ch[len--] = (char) (a.charAt(i--) + b.charAt(j--) - '0');
        }
        //余下仅有一个还未加完
        while(i >= 0){
            ch[len--] = a.charAt(i--);
        }
        while(j >= 0){
            ch[len--] = b.charAt(j--);
        }
        int k = 0;//进位
        //处理进位
        for(i = ch.length-1; i >=1; i--){
            ch[i] = (char) (k + ch[i] - '0');
            k = ch[i]/2;
            ch[i] = (char) (ch[i]%2 + '0');
        }
        //判断是否还有进位
        ch[0] = (char) (k > 0 ? k +'0': '0');
        //消除开头的0
        return new String(ch).replaceAll("^0", "");
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

leetCode 67.Add Binary (二进制加法) 解题思路和方法

标签:leetcode   二进制   

原文地址:http://blog.csdn.net/xygy8860/article/details/46929395

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!