zoukankan      html  css  js  c++  java
  • LeetCode--Add Binary

    Given two binary strings, return their sum (also a binary string).

    For example,
    a = "11"
    b = "1"
    Return "100".

    思路:二进制加法计算的步骤:

         1、将二进制转化成字符串的形式,这样从高位到地位依次每一位都能利用String+String的形式向里添加数  

         2、将末尾对其  

         3、相加时,a+b+进位   (也就是说,二进制相加时,是要对每一位进行处理,而每一位只有0和1,carry 只有 0和1,那么相加只有 0,1,2,3的结果) 

     代码如下:
        public static String addBinary(String a, String b) {
            if (a.length() < b.length()) {
                String tmp;
                tmp = a;
                a = b;
                b = tmp;
            }                                            //保证,a的长度大于b的长度
            int alength = a.length() - 1;
            int blength = b.length() - 1;
            int carry = 0;
            String res = "";

            while (blength >= 0) {
                int sum = (a.charAt(alength) - '0') +(b.charAt(blength) - '0') + carry;//这里直接用字符转换成int类型
                res = String.valueOf(sum % 2) + res;
                carry = sum / 2;
                alength--;
                blength--;
            }
            while (alength >= 0) {
                int sum = (a.charAt(alength)) + carry;
                res = String.valueOf(sum % 2) + res;
                carry = sum / 2;
                alength--;
            }
            if (carry == 1) {
                res = '1' + res;   //字符添加到字符串的形式:从左侧累加
            }
            return res;
        }
    }

    态度决定行为,行为决定习惯,习惯决定性格,性格决定命运
  • 相关阅读:
    刷题总结——射箭(bzoj2732)
    算法复习——半平面交(bzoj2618凸多边形)
    刷题总结——spoj1812(后缀自动机+DP)
    刷题总结:最长公共字串(spoj1811)(后缀自动机)
    算法复习——后缀自动机
    算法复习——splay+启发式合并(bzoj2733-永无乡)
    北京集训TEST13——PA(Goodness)
    linux命令学习笔记(46):vmstat命令
    linux命令学习笔记(45):free 命令
    linux命令学习笔记(44):top命令
  • 原文地址:https://www.cnblogs.com/neversayno/p/5043576.html
Copyright © 2011-2022 走看看