來刷 LeetCode 吧! 19 67. Add Binary
LeetCode
題目分析
給兩個大整數的二進位字串,回傳兩個相加的和
第一直覺(錯誤)
- 字串轉為數字相加再換回字串
var addBinary = function (a, b) { var dec = parseInt(a, 2) + parseInt(b, 2); return dec.toString(2); };
錯在若a、b過大。
Js Number 是以雙精度浮點數表示,精度約為 16位十進制數,若超出範圍會出現精度損失。
BigInt
在 js 當中有一些前綴字可以表示後面的字串為什麼進制。
- 0b 二進制
- 0o 八進制
- 0x 十六進制
添加二進制的前綴 “0b”
var addBinary = function (a, b) { var dec = BigInt("0b" + a) + BigInt("0b" + b); return dec.toString(2); };