67. Add Binary

来源:互联网 发布:邮箱域名大全 编辑:程序博客网 时间:2024/06/14 21:06

原题

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

For example,

a = "11"b = "1"Return "100".

代码实现

        public string AddBinary(string a, string b)        {            StringBuilder sb = new StringBuilder();            int carry = 0, acnt = a.Length, bcnt = b.Length;            for (int i = acnt - 1, j = bcnt - 1; i >= 0 || j >= 0 || carry == 1; i--, j--){                           int sum2 = 0;                if (i < 0 && j < 0){ //overflow solving                                   sb.Append(carry);                    carry = 0;                    continue;                }                //discuss three conditions according to i and j                if (i < 0) sum2 = b[j] - '0';                else if (j < 0) sum2 = a[i] - '0';                else sum2 = a[i] - '0' + b[j] - '0';                if (sum2 + carry < 2){                    sb.Append(sum2 + carry);                    carry = 0;                }                else {                    sb.Append(sum2 + carry - 2);                    carry = 1;                }            }            //reverse the sb            IEnumerable<char> rtnchars = sb.ToString().Reverse();            sb.Clear();            foreach (var ch in rtnchars) sb.Append(ch);            return sb.ToString();        }

leetcode-solution库

leetcode算法题目解决方案每天更新在github库中,欢迎感兴趣的朋友加入进来,也欢迎star,或pull request。https://github.com/jackzhenguo/leetcode-csharp