关闭

Add Binary

标签: 二进制
131人阅读 评论(0) 收藏 举报
分类:

题目描述

Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.

题目解答

解题思路

二进制加法都是从低位开始加(也就是字符串的高位),所以要从高位开始加

‘1’ - ‘0’ = 1

代码实现

/**
 * 从低位开始加   也就是字符串的高位
 */
public class Solution {
    public String addBinary(String a, String b) {
         if(a == null || b == null)
            return "";

        StringBuilder ret = new StringBuilder("");
        int i = a.length()-1, j = b.length()-1;
        int carry = 0;
        while(i >= 0 || j >= 0){
            int sum = carry;
            if(i >= 0)
                sum += (a.charAt(i--)-'0');
            if(j >= 0)
                sum += (b.charAt(j--)-'0');

            carry = sum / 2;
            //int + char --> int 注意
            char temp = (char)(sum%2 + '0');
            ret.insert(0, temp);
        }
        if(carry == 1)
            ret.insert(0, '1');
        return ret.toString();
    }
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41953次
    • 积分:1858
    • 等级:
    • 排名:千里之外
    • 原创:148篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    博客专栏
    最新评论