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

lintcode 容易题:Add Binary 二进制求和

时间:2015-10-10 19:54:43      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

题目:

二进制求和

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

样例

a = 11

b = 1

返回 100

解题:

和求两个链表的和很类似

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

0+0 = 0 不需要进位

0+1 = 1 不需要进位

1+1 =0  进位 1

同时注意

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

Java程序:

技术分享
public class Solution {
    /**
     * @param a a number
     * @param b a number
     * @return the result
     */
    public String addBinary(String a, String b) {
        // Write your code here
        String result = "";
        int aLen = a.length() - 1;
        int bLen = b.length() - 1;
        int sum = 0;
        while(aLen>=0 || bLen>=0){
            if(aLen>=0){
                sum +=Integer.parseInt(a.substring(aLen,aLen+1));
                aLen--;
            }
            if(bLen>=0){
                sum +=Integer.parseInt(b.substring(bLen,bLen+1));
                bLen--;
            }
            if(sum==2){
                result = "0" + result;
                sum=1;
            }else if(sum==0 || sum==1) {
                result = sum +"" + result;
                sum = 0;
            }else if(sum==3){
                result = "1" + result;
                sum = 1;
            }
        }
        if(sum==1)
            result = "1" + result;
        return result;
        
    }
}
View Code

Python程序:
总耗时: 10156 ms

技术分享
class Solution:
    # @param {string} a a number
    # @param {string} b a number
    # @return {string} the result
    def addBinary(self, a, b):
        # Write your code here
        result =‘‘
        aLen = len(a) - 1
        bLen = len(b) - 1 
        sum = 0
        while aLen>=0 or bLen>=0:
            if aLen>=0:
                sum += int(a[aLen])
                aLen-=1
            if bLen>=0:
                sum+= int(b[bLen])
                bLen-=1
            if sum==3:
                result = 1 + result
                sum=1
            elif sum==2:
                result = 0 + result
                sum=1
            else:
                result = str(sum) + result
                sum = 0
        if sum==1:
            result = 1 + result
        return result
View Code

总耗时: 523 ms

 

lintcode 容易题:Add Binary 二进制求和

标签:

原文地址:http://www.cnblogs.com/theskulls/p/4867988.html

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