首页 > 代码库 > Add Binary
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) { if (a == null || b == null) { return null; } if (a.equals("")) { return b; } if (b.equals("")) { return a; } int lenA = a.length(); int lenB = b.length(); int i = lenA - 1; int j = lenB - 1; boolean flag = false; StringBuilder builder = new StringBuilder(); while (i >= 0 && j >= 0) { char curA = a.charAt(i); char curB = b.charAt(j); if (flag) { if (curA == '0' && curB == '0') { builder.append(1); flag = false; } if (curA == '0' && curB == '1') { builder.append(0); flag = true; } if (curA == '1' && curB == '0') { builder.append(0); flag = true; } if (curA == '1' && curB == '1') { builder.append(1); flag = true; } } else { if (curA == '0' && curB == '0') { builder.append(0); flag = false; } if (curA == '0' && curB == '1') { builder.append(1); flag = false; } if (curA == '1' && curB == '0') { builder.append(1); flag = false; } if (curA == '1' && curB == '1') { builder.append(0); flag = true; } } i--; j--; } while (i >= 0) { char curA = a.charAt(i); if (flag) { if (curA == '0') { builder.append(1); flag = false; } else { builder.append(0); flag = true; } } else { builder.append(curA); } i--; } while (j >= 0) { char curB = b.charAt(j); if (flag) { if (curB == '0') { builder.append(1); flag = false; } else { builder.append(0); flag = true; } } else { builder.append(curB); } j--; } if (flag) { builder.append(1); } return builder.reverse().toString(); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。