zoukankan      html  css  js  c++  java
  • lintcode:Add Binary 二进制求和

    题目:

    二进制求和

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

    样例

    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

  • 相关阅读:
    对于字符串的重复字符的去除
    487-3279
    队列设计(转)
    动态创建JS
    前端技巧:禁止浏览器static files缓存篇(转)
    cas与NGINX整合(转)
    秒杀场景下MySQL的低效(转)
    html禁用缓存
    MD5随机盐值生成法
    SVN There are unfinished transactions detected
  • 原文地址:https://www.cnblogs.com/bbbblog/p/4867988.html
Copyright © 2011-2022 走看看