1. 概述

给两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 10

提示:

  • 每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。

  • 1 <= a.length, b.length <= 10^4

  • 字符串如果不是 “0” ,就都不含前导零。

2. 解题

  1. <?php
  2. class Solution {
  3. /**
  4. * @param String $a
  5. * @param String $b
  6. * @return String
  7. */
  8. public function addBinary($a, $b) {
  9. $maxStr = strlen($a) > strlen($b) ? $a : $b;
  10. $maxLen = strlen($maxStr);
  11. $a = strrev($a);
  12. $b = strrev($b);
  13. $ret = '';
  14. $carry = 0;
  15. for ($i = 0; $i < $maxLen; $i++) {
  16. $a[$i] = $a[$i] ?? 0;
  17. $b[$i] = $b[$i] ?? 0;
  18. $tmp = $a[$i] + $b[$i] + $carry;
  19. if ($tmp > 1) {
  20. $carry = 1;
  21. $remainder = $tmp % 2;
  22. } else {
  23. $carry = 0;
  24. $remainder = $tmp;
  25. }
  26. $ret .= $remainder;
  27. }
  28. if ($carry) {
  29. $ret .= 1;
  30. }
  31. $ret = strrev($ret);
  32. return $ret;
  33. }
  34. }
  35. $a = "1010";
  36. $b = "1011";
  37. $cls = new Solution();
  38. $r = $cls->addBinary($a, $b);
  39. echo $r;