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

67. Add Binary

时间:2017-08-01 20:37:05      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:一个   string   分配   java   span   常用   end   字符   str   

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

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

双字符串常用双指针问题

public String addBinary(String a, String b) {
        StringBuilder sb = new StringBuilder();
        int i = a.length() - 1, j = b.length() - 1;
        int carry = 0;
        while (i >= 0 || j >= 0) {
            int sum = carry;
            if (i >= 0) sum += a.charAt(i--) - ‘0‘;
            if (j >= 0) sum += b.charAt(j--) - ‘0‘;
            sb.append(sum % 2);
            carry = sum / 2;
            
        }
        if (carry != 0) sb.append(carry);
        return sb.reverse().toString();
    }

想好容器, 双指针, 借助sum, carry, 别忘了最后加carry, 和 reverse

字符转化为数值, a.charAt(i) - ‘0‘: 两个字符相减实际上是ASCII码对应的数相减; 也可以替换为:

 if (i >= 0) sum += Character.getNumericValue(a.charAt(i--));

getNumericValue

public static int getNumericValue(char ch)
返回指定的 Unicode 字符表示的 int 值。例如,字符 ‘\u216C‘(罗马数字 50)将返回一个值为 50 的整数。

字母 A-Z 的大写(‘\u0041‘ 到 ‘\u005A‘)、小写(‘\u0061‘ 到 ‘\u007A‘)和全形参数(‘\uFF21‘ 到 ‘\uFF3A‘ 和‘\uFF41‘ 到 ‘\uFF5A‘)形式拥有从 10 到 35 的数值。这独立于 Unicode 规范,该规范没有为这些 char 值分配数值。

67. Add Binary

标签:一个   string   分配   java   span   常用   end   字符   str   

原文地址:http://www.cnblogs.com/apanda009/p/7270112.html

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