题目:

二进制求和

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

样例

a = 11

b = 1

返回 100

解题:

和求两个链表的和很类似

考虑进位,考虑最后一项的进位

0+0 = 0 不需要进位

0+1 = 1 不需要进位

1+1 =0  进位 1

同时注意

低位进1,高位时1+1的情况,直接加就是3了,这个需要进位1 ,原位的结果也是1的情况

Java程序:

  1. public class Solution {
  2. /**
  3. * @param a a number
  4. * @param b a number
  5. * @return the result
  6. */
  7. public String addBinary(String a, String b) {
  8. // Write your code here
  9. String result = "";
  10. int aLen = a.length() - 1;
  11. int bLen = b.length() - 1;
  12. int sum = 0;
  13. while(aLen>=0 || bLen>=0){
  14. if(aLen>=0){
  15. sum +=Integer.parseInt(a.substring(aLen,aLen+1));
  16. aLen--;
  17. }
  18. if(bLen>=0){
  19. sum +=Integer.parseInt(b.substring(bLen,bLen+1));
  20. bLen--;
  21. }
  22. if(sum==2){
  23. result = "0" + result;
  24. sum=1;
  25. }else if(sum==0 || sum==1) {
  26. result = sum +"" + result;
  27. sum = 0;
  28. }else if(sum==3){
  29. result = "1" + result;
  30. sum = 1;
  31. }
  32. }
  33. if(sum==1)
  34. result = "1" + result;
  35. return result;
  36.  
  37. }
  38. }

Python程序:
总耗时: 10156 ms

  1. class Solution:
  2. # @param {string} a a number
  3. # @param {string} b a number
  4. # @return {string} the result
  5. def addBinary(self, a, b):
  6. # Write your code here
  7. result =''
  8. aLen = len(a) - 1
  9. bLen = len(b) - 1
  10. sum = 0
  11. while aLen>=0 or bLen>=0:
  12. if aLen>=0:
  13. sum += int(a[aLen])
  14. aLen-=1
  15. if bLen>=0:
  16. sum+= int(b[bLen])
  17. bLen-=1
  18. if sum==3:
  19. result = '' + result
  20. sum=1
  21. elif sum==2:
  22. result = '' + result
  23. sum=1
  24. else:
  25. result = str(sum) + result
  26. sum = 0
  27. if sum==1:
  28. result = '' + result
  29. return result

总耗时: 523 ms

lintcode:Add Binary 二进制求和的更多相关文章

  1. # Leetcode 67:Add Binary(二进制求和)

    Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...

  2. Add Strings大整数加法十进制求和 & Add Binary二进制求和

    [抄题]: 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和. 比如一个50位+一个100位. 给定 num1 = "123",num2 = ...

  3. 067 Add Binary 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示).案例:a = "11"b = "1"返回 "100" .详见:https://leetc ...

  4. [LintCode] Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). Have you met this question in a r ...

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

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  6. 【LeetCode每天一题】Add Binary(二进制加法)

    Given two binary strings, return their sum (also a binary string).The input strings are both non-emp ...

  7. [leetcode]67. Add Binary 二进制加法

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  8. [Leetcode] add binary 二进制加法

    Given two binary strings, return their sum (also a binary string). For example,a ="11"b =& ...

  9. Lintcode: Add Binary

    C++ class Solution { public: /** * @param a a number * @param b a number * @return the result */ str ...

随机推荐

  1. 方便实用的jQuery checkbox复选框全选功能

    // 主复选框 <input type="checkbox" id="ck" name="ckAll">// 子复选框项 < ...

  2. AngularJS(17)-Angular小程序

    现在可以开始创建您的第一个 AngularJS 应用程序,一个 AngularJS 单页 Web 应用. <!DOCTYPE html> <html lang="en&qu ...

  3. .Net中的Socket通讯

    .NetFrameWork为Socket通讯提供了System.Net.Socket命名空间,在这个命名空间里面有以下几个常用的重要类分别是: ·Socket类 这个低层的类用于管理连接,WebReq ...

  4. 亚马逊左侧导航(jquery.menuaim.js)

    jquery.menuaim.js     主菜单 <div class="active"> <ul class="dropdown-menu" ...

  5. 重拾C,一天一点点_2

    类型转换一般来说,如果二元运算符的两个操作数具有不同的类型,较低的类型提升为较高类型,结果为较高类型.表达式由float类型的操作数不会自动转换为double类型.使用float类型主要是为了在使用较 ...

  6. Amazon S3 PHP Class Documentation

    API : http://undesigned.org.za/2007/10/22/amazon-s3-php-class/documentation Example: http://www.phpb ...

  7. PHP:strpos()-返回字符串在另一个字符串中第一次出现的位置

    strpos()函数返回字符串在另一个字符串中第一次出现的位置.如果没有找到该字符串,则返回false. 语法:strpos(sting, find [, start]) string ,必须,要搜索 ...

  8. VS2010配色方案

    http://studiostyl.es/ 导入步骤:  工具------------导入和导出设置------------导入选定的环境设置------------否,仅导入新设置--------- ...

  9. 为什么C/C++语言使用指针

    这是参加面试时,面试官问的一道开放性题目. 问题是:为什么C/C++语言使用指针? 这个问题一问出来,直接被面试官秒杀了,面试官大神,你怎么不按套路出牌啊? 说好的malloc和new的区别呢?说好的 ...

  10. matlab实现的嵌套乘法、高精度、二分法

    嵌套乘法的计算: \[ P(x) = 1 - x + x^2 - x^3 + ...+ x ^ {98} - x^{99} \] function y = nest( d, c, x, b ) if ...