美文网首页
每天一题LeetCode【第49天】

每天一题LeetCode【第49天】

作者: 草稿纸反面 | 来源:发表于2017-04-16 10:28 被阅读84次

    T67. Add Binary【Easy

    题目

    给两个二进制的字符串,返回他们的和(也是二进制的字符串)

    例如,

    a = "11"
    b = "1“
    return "100"
    

    思路

    应该是大家都很熟悉的题,注释写在代码里了~看了应该就ok了ヽ( )ノ

    代码

    代码取自 Top Solution,稍作注释

    public String addBinary(String a, String b) {
            StringBuilder sb = new StringBuilder();
            int i = a.length() - 1, j = b.length() -1, carry = 0;
            //这里要用或
            while (i >= 0 || j >= 0) {
                // 先把 sum 置为前面的进位
                int sum = carry;
                // 用ASCII码相减避免了类型转换
                if (j >= 0) sum += b.charAt(j--) - '0';
                if (i >= 0) sum += a.charAt(i--) - '0';
                //加入这个位置的结果
                sb.append(sum % 2);
                // carry 设为进位
                carry = sum / 2;
            }
            //若再进位则再加一个 1
            if (carry != 0) sb.append(carry);
            //取逆返回
            return sb.reverse().toString();
        }
    

    相关文章

      网友评论

          本文标题:每天一题LeetCode【第49天】

          本文链接:https://www.haomeiwen.com/subject/jhogattx.html