67. Add Binary
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了67. Add Binary相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章