Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1
or 0
.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
public class Solution { public static String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); if (0 == a.length()) { return b; } if (0 == b.length()) { return a; } char[] as = a.toCharArray(); char[] bs = b.toCharArray(); int lengtha = as.length - 1; int lengthb = bs.length - 1; int length = (as.length > bs.length) ? as.length : bs.length; boolean flag = false; for (int i = 0; i < length; i++) { char chara; char charb; if (i >= as.length) { chara = '0'; } else { chara = as[lengtha--]; } if (i >= bs.length) { charb = '0'; } else { charb = bs[lengthb--]; } if (flag) { if (chara == '1' && charb == '1') { flag = true; sb.append(1); } else if (chara == '0' && charb == '0') { sb.append(1); flag = false; } else { sb.append(0); flag = true; } } else { if (chara == '1' && charb == '1') { flag = true; sb.append(0); } else if (chara == '0' && charb == '0') { sb.append(0); flag = false; } else { sb.append(1); flag = false; } } } if (flag) { sb.append(1); } return sb.reverse().toString(); } }