LintCode - 二进制求和(普通)

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

难度:容易
要求:

给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11
b = 1
返回 100

思路:

解题容易,注意边界处理。

public class Solution {
    /**
     * @param a a number
     * @param b a number
     * @return the result
     */
    public String addBinary(String a, String b) {
        if(a.length() < b.length()){//长的换到左边
            String tmp = a;
            a = b;
            b = tmp;
        }
        
        int pa = a.length() - 1;
        int pb = b.length() - 1;
        int carries = 0;//进位
        String rst = "";//返回结果
        
        while(pb >= 0){
            int sum = (int)(a.charAt(pa) - '0') + (int)(b.charAt(pb) - '0') + carries;
            rst = String.valueOf(sum % 2) + rst;//取当前位数
            carries = sum / 2;//取进位数
            pa --;
            pb --;
        }
        
        while(pa >= 0){
            int sum = (int)(a.charAt(pa) - '0') + carries;
            rst = String.valueOf(sum % 2) + rst;
            carries = sum / 2;
            pa --;
        }       
        
        if (carries == 1){
            rst = "1" + rst;
        }  
        return rst;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定两个二进制字符串,返回他们的和(用二进制表示)。您在真实的面试中是否遇到过这个题?Yes样例a = 11b =...
    DayDayUpppppp阅读 2,806评论 0 0
  • 题目 描述 给定两个二进制字符串,返回他们的和(用二进制表示)。 样例 a = 11b = 1返回 100 解答 ...
    悠扬前奏阅读 2,910评论 0 0
  • 3.10 69.给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 二叉树的层次遍历样例给一棵二叉树 {3...
    mytac阅读 4,758评论 3 3
  • 我是小小强,这是我的第6篇原创文章,阅读需要大约10分钟。 题目 LintCode:二进制求和 描述 给定两个二进...
    我叫小小强阅读 3,991评论 0 1
  • 一定有那么一天 在我心无处安放的时候 我觉得我该爱着你 就像单薄的冬天 我该给太阳足够的热度 尽管冷风还是会来 可...
    零温度阅读 1,839评论 1 0