C++:
1 class Solution { 2 public: 3 string addBinary(string a, string b) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 if (a.size() > b.size()) b = string(a.size()-b.size(), '0') + b; 7 if (a.size() < b.size()) a = string(b.size()-a.size(), '0') + a; 8 for (int i = 0; i < a.size(); i++) a[i] += int(b[i]-'0'); 9 int carry = 0; 10 for (int i = a.size()-1; i >= 0; i--) { 11 a[i] += carry; 12 carry = (a[i]-'0') / 2; 13 if (a[i] > '1') a[i] = '0' + (a[i]-'0') % 2; 14 } 15 if (carry) a = '1'+a; 16 return a; 17 } 18 };
java: 填补短string前面零字符串的操作很烦
1 public class Solution { 2 public String addBinary(String a, String b) { 3 int aLen = a.length(); 4 int bLen = b.length(); 5 for (int i = 0; i < Math.abs(aLen - bLen); i++) 6 { 7 if (aLen < bLen) 8 { 9 a = "0" + a; 10 } 11 else 12 { 13 b = "0" + b; 14 } 15 } 16 char[] cs1 = a.toCharArray(); 17 char[] cs2 = b.toCharArray(); 18 char[] cs3 = new char[a.length()]; 19 int c = 0; 20 for (int i = a.length()-1; i >= 0; i--) 21 { 22 int tmp = c + (cs1[i] - '0') + (cs2[i] - '0'); 23 c = tmp / 2; 24 cs3[i] = (char)('0' + tmp % 2); 25 } 26 String ans = new String(cs3); 27 if (c > 0) 28 { 29 ans = "1" + ans; 30 } 31 return ans; 32 } 33 }