题意:

image.png

解题思路:

  1. 思路:
  2. 1. 从低位到高位,计算出每一位数字,相加>=2则记录进位数;
  3. 2. 如果最高位是进位1,则结果为进位数+后面的每一位;

PHP代码实现:

  1. class Solution {
  2. /**
  3. * @param String $a
  4. * @param String $b
  5. * @return String
  6. */
  7. function addBinary($a, $b) {
  8. $res = "";
  9. $m = strlen($a) - 1;
  10. $n = strlen($b) - 1;
  11. $carry = 0;//进位
  12. while ($m >= 0 || $n >= 0) {
  13. $x = $m >= 0 ? $a[$m] : 0;
  14. $y = $n >= 0 ? $b[$n] : 0;
  15. $res = ($x + $y + $carry) % 2 . $res;
  16. $carry = ($x + $y + $carry) >= 2 ? 1 : 0;
  17. $m--;
  18. $n--;
  19. }
  20. return $carry > 0 ? $res = $carry . $res : $res;
  21. }
  22. }

GO代码实现:

  1. func addBinary(a string, b string) string {
  2. ans := ""
  3. carry := 0
  4. lenA, lenB := len(a), len(b)
  5. for lenA != 0 || lenB != 0 {
  6. x, y := 0, 0
  7. if lenA != 0 {
  8. x = int(a[lenA-1] - '0')
  9. lenA--
  10. }
  11. if lenB != 0 {
  12. y = int(b[lenB-1] - '0')
  13. lenB--
  14. }
  15. temp := x + y + carry
  16. ans = strconv.Itoa(temp % 2) + ans
  17. carry = temp / 2
  18. }
  19. if carry != 0 {
  20. ans = "1" + ans
  21. }
  22. return ans
  23. }