给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 '*'、除号 '/' 以及求余符号 '%' 。
注意:
整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回 231 − 1
示例 1:
输入:a = 15, b = 2
输出:7
解释:15/2 = truncate(7.5) = 7
示例 2:
输入:a = 7, b = -3
输出:-2
解释:7/-3 = truncate(-2.33333..) = -2
示例 3:
输入:a = 0, b = 1
输出:0
示例 4:
输入:a = 1, b = 1
输出:1
提示:
-231 <= a, b <= 231 - 1
b != 0
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/xoh6Oh
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
var addBinary = function(a, b) {
let maxLength = Math.max(a.length, b.length)
a = a.padStart(maxLength , "0")
b = b.padStart(maxLength , "0")
let i = maxLength - 1
carry = 0
res = ""
while (i >= 0){
sum = Number(a[i]) + Number(b[i]) + carry
console.log(1111,sum);
res = sum % 2 + res
console.log(2222,res);
carry = Math.floor(sum/2)
console.log(3333,carry);
i--
}
res = carry == 1? 1 + res : res
return res
};
1.Math.floor()
返回小于或等于一个给定数字的最大整数。
可以理解 Math.floor()
为向下取整。
与其相对的是 Math.ceil()
,这个是向上取整。
2.ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()
用于头部补全,padEnd()
用于尾部补全。