Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
public class Solution { public static String addBinary(String a, String b) { if(a.equals("")) return b; if(b.equals("")) return a; int al = a.length() - 1; //指向a数组的末尾 int bl = b.length() - 1; //指向b数组的末尾 int t = Math.max(al, bl) + 1; char[] arr = new char[t+1]; //设置要创建char数组的长度 int c = 0; /*char[] str1 = a.toCharArray(); char[] str2 = b.toCharArray();*/ for(; al>=0 && bl>=0; al--, bl--, t--) { int s = a.charAt(al) + b.charAt(bl) + c - ‘0‘ - ‘0‘; if(s==2) { c = 1; s = 0; } else if(s == 3) { c = 1; s = 1; } else c = 0; arr[t] = (char)(s+‘0‘); } while (al >= 0) { if(a.charAt(al) - ‘0‘ + c > 1) { arr[t] = 0 + ‘0‘; c = 1; } else { arr[t] = (char) (a.charAt(al) + c); c = 0; } t--; al--; } while (bl >= 0) { if(b.charAt(bl) - ‘0‘ + c > 1) { arr[t] = 0 + ‘0‘; c = 1; } else { arr[t] = (char) (b.charAt(bl) + c); c = 0; } t--; bl--; } if(c == 1) arr[0] = 1+‘0‘; //将数组转化为字符串输出 return new String(arr).trim(); } }
Leetcode Add Binary [Java解题报告]
原文:http://www.cnblogs.com/lovechara/p/4854451.html