LeetCode 67. Add Binary

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".


【题目分析】

这个题目很简短,要做的事情也比较简单,即:把两个用字符串表示的二进制数相加,结果同样以字符串的形式返回。


【思路】

我们的思路就是从每个字符串的最后取一个数字,依次相加,并且向前进位。

需要注意的一点就是当前取得的字符串不能直接与结果相加,而是要减去48或者'0',因为'0'的ASCII码是48。至于java中的编码方式,其实一直没有弄太明白,最近也在看相关的内容,希望把这一部分掌握。


【java代码】

 1 public class Solution {
 2     public String addBinary(String a, String b) {
 3         int alen = a.length() - 1;
 4         int blen = b.length() - 1;
 5         StringBuilder result = new StringBuilder();
 6         int flag = 0;
 7         
 8         while(alen >= 0 || blen >= 0) {
 9             int sum = flag;
10             if(alen >= 0) sum += a.charAt(alen--) - 48;
11             if(blen >= 0) sum += b.charAt(blen--) - 48;
12             result.append(sum % 2);
13             flag = sum / 2;
14         }
15         if(flag != 0) result.append(1);
16         return result.reverse().toString();
17     }
18 }

 

 
posted @ 2016-10-25 10:33  Black_Knight  阅读(181)  评论(0编辑  收藏  举报