题意:
解题思路:
思路:
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
}