Lintcode 408 二进制求和

原创 2016年08月28日 18:25:02

描述:

给定两个二进制字符串,返回他们的和(用二进制表示)。

 

样例:

a=11

b = 1

返回 100

 

题解:

从低位将两个二进制相加,下次相加的时候再加上进位

每次统计本位置的值,和向上一位进的数是什么

num/10统进进位

num%10统计本位置的值
 

代码:

class Solution {
public:
    /**
     * @param a a number
     * @param b a number
     * @return the result
     */
    string addBinary(string& a, string& b) {
        // Write your code here
        
        string result = "";
        
        int num=0,c=0;
        
        int i = a.length() - 1;
        int j = b.length() - 1;
        
        
        //计算a和b相同位数的和
        for(; i>=0&&j>=0; i--,j--)
        {
            num = (a[i]-'0') + (b[j]-'0') + c;
            c = num / 2;
            num = num % 2;
            result += ('0' + num);
        }
        
        //如果a比b长,计算a的剩余部分
        for(; i>=0; i--)
        {
            num = (a[i] - '0') + c;
            c = num / 2;
            num = num % 2;
            result += ('0' + num);
        }
        
        //如果b比a长,计算b的剩余部分
        for(; j>=0; j--)
        {
            num = (b[j] - '0') + c;
            c = num / 2;
            num = num % 2;
            result += ('0' + num);
        }
        
        //如果还有进位没有处理,加上进位
        if(c != 0)
        {
            result += ('0' + c);
        }
        
        //将结果顺序调正
        for(int i=0,j=result.length()-1; i<j; i++,j--)
        {
            char temp = result[i];
            result[i] = result[j];
            result[j] = temp;
        }
        
        return result;
    }
};


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

相关文章推荐

LintCode | 408. 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。 比较蠢的办法public class Solution { public String addBinary(String a, String...
  • orz_713
  • orz_713
  • 2017年03月12日 21:23
  • 113

lintcode --二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。 您在真实的面试中是否遇到过这个题?  Yes 样例 a = 11 b = 1 返回 100 ...

LintCode(容易)二进制求和

class Solution { public: /** * @param a a number * @param b a number * @return th...

lintcode add-binary 二进制求和

问题描述给定两个二进制字符串,返回他们的和(用二进制表示)。样例 a = 11b = 1返回 100代码class Solution { public: /** * @param ...

lintcode 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。

Lintcode容易题 二进制求和 查看运行结果  15:00  Start 给定两个二进制字符串,返回他们的和(用二进制表示)。 您在真实的面试中是否遇到过这个题?  Yes ...
  • cjt5047
  • cjt5047
  • 2016年02月21日 18:06
  • 2542

lintcode(207)区间求和 II

207.Interval Sum II Description: 在类的构造函数中给一个整数数组, 实现两个方法 query(start, end) 和 modify(index, value)...

LintCode 链表求和

描述: 你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。 ...
  • outmain
  • outmain
  • 2016年04月24日 19:36
  • 391

链表求和(LintCode)

题目来源:LintCode 原题地址:http://www.lintcode.com/zh-cn/problem/add-two-numbers/ 题目: 你有两个用链表...
  • lyy_hit
  • lyy_hit
  • 2015年11月11日 22:25
  • 2082

LintCode 20 骰子求和

题目:dicesSum要求:扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。样例:给定 n = 1,返回 [ [1, 0.17], [2, 0.1...

[Lintcode]Interval Sum II区间求和 II

Given an integer array in the construct method, implement two methods query(start, end) and modify(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lintcode 408 二进制求和
举报原因:
原因补充:

(最多只允许输入30个字)