67. Add Binary

 1 class Solution {
 2     public String addBinary(String a, String b) {
 3         if(a.length() == 0 && b.length() == 0) return null;
 4         StringBuilder sb1 = new StringBuilder(a);
 5         sb1.reverse();
 6         StringBuilder sb2 = new StringBuilder(b);
 7         sb2.reverse();
 8         StringBuilder res = new StringBuilder();
 9         int carry = 0;
10         for(int i = 0; i < Math.max(sb1.length(), sb2.length()); i++) {
11             if(i >= sb2.length()) {
12                 res.append((sb1.charAt(i) - '0' + carry) % 2); //注意carry要在 下面 更新
13                 carry = (sb1.charAt(i) - '0' +carry) / 2;
14                 
15             }else if(i >= sb1.length()){
16                 res.append((sb2.charAt(i) - '0' + carry) % 2);
17                 carry = (sb2.charAt(i) - '0' +carry) / 2;    
18             }else {
19                 res.append((sb1.charAt(i) - '0' + sb2.charAt(i) - '0' + carry) % 2);
20                 carry = (sb1.charAt(i) - '0' + sb2.charAt(i) - '0' + carry) / 2;
21             }
22         }
23         if(carry == 1) {
24             res.append(1);
25         }
26         return res.reverse().toString();
27         
28     }
29 }

 

posted @ 2018-09-14 10:42  jasoncool1  阅读(145)  评论(0编辑  收藏  举报