Add Binary

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

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

思路: 从后向前加,保持进位,当无进位,且遍历完毕时结束。

注意:Collections.reverse不能用于String,而StringBuffer自己带有reverse函数,return a reference to this object.

  1. public String addBinary(String a, String b) {
  2. if(a==null) return b;
  3. if(b==null) return a;
  4. int alen = a.length();
  5. int blen = b.length();
  6. if(alen==0) return b;
  7. if(blen==0) return a;
  8. StringBuffer res = new StringBuffer();
  9. int cnt = 0;
  10. alen = alen-1;
  11. blen = blen -1;
  12. while(alen>=0 || blen>=0 || cnt>0) {
  13. int first = 0;
  14. int second=0;
  15. if(alen>=0) first=a.charAt(alen--)-'0';
  16. if(blen>=0) second=b.charAt(blen--)-'0';
  17. int sum = first + second + cnt;
  18. if(sum>=2) {
  19. sum = sum - 2;
  20. cnt = 1;
  21. } else {
  22. cnt = 0;
  23. }
  24. res.append(sum);
  25. }
  26. String res2 = res.reverse().toString();
  27. return res2;
  28. }
posted @ 2014-07-20 23:08  purejade  阅读(124)  评论(0编辑  收藏  举报