/************************** LeetCode 67 Add Binary Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Return "100". ***********************************/ /************** 思想: 1.考虑四种情况 A+B A、B长度一样(最后一位有、无进位) A、B长度不一样(最后一位有、无进位) *********/ string addBinary(string num1, string num2) { int carry = 0;//进位标志位 int len1 = num1.size(); int len2 = num2.size(); if (len1<1 || len2<1) { return ""; } string result; int sum = 0; if (len2 <= len1) { int index = 1; while (index <= len2) { sum = num1[len1 - index] - '0' + num2[len2 - index] - '0' + carry; result = (char)(sum % 2 + '0') + result; carry = sum / 2; index++; } index = len1 - len2 - 1; while (index >= 0) { sum = num1[index] - '0' + carry; result = (char)(sum % 2 + '0') + result; carry = sum / 2; index--; } } else//num2大 { int index = 1; while (index <= len1) { sum = num1[len1 - index] - '0' + num2[len2 - index] - '0' + carry; result = (char)(sum % 2 + '0') + result; carry = sum / 2; index++; } index = len2 - len1 - 1; while (index >= 0) { sum = num2[index] - '0' + carry; result = (char)(sum % 2 + '0') + result; carry = sum / 2; index--; } } //处理最后的进位 if (carry>0) { return "1" + result; } else { return result; } }
【LeetCode 67】 Add Binary
最新推荐文章于 2023-04-25 11:26:10 发布