首页 > 代码库 > 67. Add Binary
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。