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 }