题意:
解题思路:
思路:1. 从低位到高位,计算出每一位数字,相加>=2则记录进位数;2. 如果最高位是进位1,则结果为进位数+后面的每一位;
PHP代码实现:
class Solution { /** * @param String $a * @param String $b * @return String */ function addBinary($a, $b) { $res = ""; $m = strlen($a) - 1; $n = strlen($b) - 1; $carry = 0;//进位 while ($m >= 0 || $n >= 0) { $x = $m >= 0 ? $a[$m] : 0; $y = $n >= 0 ? $b[$n] : 0; $res = ($x + $y + $carry) % 2 . $res; $carry = ($x + $y + $carry) >= 2 ? 1 : 0; $m--; $n--; } return $carry > 0 ? $res = $carry . $res : $res; }}
GO代码实现:
func addBinary(a string, b string) string { ans := "" carry := 0 lenA, lenB := len(a), len(b) for lenA != 0 || lenB != 0 { x, y := 0, 0 if lenA != 0 { x = int(a[lenA-1] - '0') lenA-- } if lenB != 0 { y = int(b[lenB-1] - '0') lenB-- } temp := x + y + carry ans = strconv.Itoa(temp % 2) + ans carry = temp / 2 } if carry != 0 { ans = "1" + ans } return ans}