首页 > 代码库 > 【leetcode刷题笔记】Add Binary
【leetcode刷题笔记】Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
题解:简单的二进制加法模拟。a,b的最后以为对齐开始进行加法,用carries保存进位,如果加完后最高位还有进位,那么要在结果的最前面加一个1。
代码如下:
1 public class Solution { 2 public String addBinary(String a, String b) { 3 if(a == null || a.length() == 0) 4 return b; 5 if(b == null || b.length() == 0) 6 return a; 7 8 String s = new String(); 9 int carries = 0;10 int a_kepeler = a.length()-1;11 int b_kepeler = b.length()-1;12 13 while(a_kepeler >= 0 && b_kepeler >= 0){14 int sum = carries + a.charAt(a_kepeler) - ‘0‘ + b.charAt(b_kepeler) - ‘0‘;15 carries = sum / 2;16 sum = sum % 2;17 s = String.valueOf(sum) + s;18 a_kepeler--;19 b_kepeler--;20 }21 22 while(a_kepeler >= 0){23 int sum = carries + a.charAt(a_kepeler) - ‘0‘;24 carries = sum / 2;25 sum = sum % 2;26 s = String.valueOf(sum) + s;27 a_kepeler--;28 }29 30 while(b_kepeler >= 0){31 int sum = carries + b.charAt(b_kepeler) - ‘0‘;32 carries = sum / 2;33 sum = sum % 2;34 s = String.valueOf(sum) + s;35 b_kepeler--;36 }37 38 if(carries > 0)39 s = "1" + s;40 41 return s;42 }43 }
上述代码还可以优化,就是如果a的长度小于b,就把a,b交换,使得a总是较长的那个,那么就可以省略第30~36行的while循环了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。