算法学习(Java实现之字符串篇)····二进制求和

来源:互联网 发布:淘宝买发票怎么搜 编辑:程序博客网 时间:2024/06/06 07:25

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

样例

a = 11

b = 1

返回 100

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    //若字符串a的长度小于字符串b的长度,两个字符串交换        if(a.length() < b.length()){            String temp = a;            a =b;            b = temp;        }        int la = a.length()-1;        int lb = b.length()-1;        int carries = 0;//进位        String res = "";//结果值        while(lb >= 0){//先依据短字符串的长度依次计算            int sum = (int)(a.charAt(la)-'0')+(int)(b.charAt(lb)-'0')+carries;            res = String.valueOf(sum%2)+res;            carries =sum/2;            la--;            lb--;        }          while(la>=0){//再依据长字符串的长度依次计算            int sum = (int)(a.charAt(la)-'0')+carries;            res = String.valueOf(sum%2)+res;            carries =sum/2;            la--;        }                if (carries==1){            res ="1"+res;//计算最后的进位        }        return res;     }}


0 0
原创粉丝点击