您的位置:首页 > 汽车 > 时评 > 网易和暴雪_中国国内最新新闻_自助建站seo_全网络品牌推广

网易和暴雪_中国国内最新新闻_自助建站seo_全网络品牌推广

2025/3/16 20:25:10 来源:https://blog.csdn.net/weixin_43852780/article/details/146242514  浏览:    关键词:网易和暴雪_中国国内最新新闻_自助建站seo_全网络品牌推广
网易和暴雪_中国国内最新新闻_自助建站seo_全网络品牌推广

这道题我的解决思路是先将a和b的长度保持一致以方便后续按位加减

let lena = a.length
let lenb = b.length
if (lena !== lenb) {if (lena > lenb) {for (let i = 0; i <lena-lenb; i++) {b = '0' + b}} else {for (let i = 0; i < lenb-lena; i++) {a = '0' + a}}
}

 下一步直接进行按位加减,做这一步时无需考虑是否需要进位

let c = ''
for (let i = 0; i < a.length; i++) {c = c + Number(Number(a[i]) + Number(b[i]))
}

最后通过将c转换为数组来做二进制进位

arr = c.split('')for (let j = arr.length - 1; j > 0; j--) {if (Number(arr[j]) >= 2) {arr[j] = Number(arr[j]) - 2arr[j - 1] = Number(arr[j - 1]) + 1}}if (Number(arr[0]) >1) {arr[0] = Number(arr[0]) - 2arr.unshift(1)}

最后将arr拼接成字符串之后返回

return arr.join('')

下面附上完整代码

/*** @param {string} a* @param {string} b* @return {string}*/
var addBinary = function (a, b) {let lena = a.lengthlet lenb = b.lengthlet c = ''let arr = []if (lena !== lenb) {if (lena > lenb) {for (let i = 0; i <lena-lenb; i++) {b = '0' + b}} else {for (let i = 0; i < lenb-lena; i++) {a = '0' + a}}}for (let i = 0; i < a.length; i++) {c = c + Number(Number(a[i]) + Number(b[i]))}arr = c.split('')for (let j = arr.length - 1; j > 0; j--) {if (Number(arr[j]) >= 2) {arr[j] = Number(arr[j]) - 2arr[j - 1] = Number(arr[j - 1]) + 1}}if (Number(arr[0]) >1) {arr[0] = Number(arr[0]) - 2arr.unshift(1)}return arr.join('')
};

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com