67. 二进制求和

思路:

跟十进制加法是一样的,只不过进位不是10而已。 其实代码可以精简一点。 但不想花精力干这个事儿了。

 

 1 /**
 2      * @param {string} a
 3      * @param {string} b
 4      * @return {string}
 5      */
 6     var addBinary = function(a, b) {
 7         let indexA = a.length-1, indexB = b.length-1;
 8         let res = '';
 9         // 进位
10         let remains = 0;
11         while(indexA >= 0 && indexB >= 0){
12             let charA = Number(a.charAt(indexA)), charB = Number(b.charAt(indexB));
13             let tmpRemains = remains;
14             remains = (charA + charB + tmpRemains) >> 1;
15             res = ((charA + charB + tmpRemains) % 2) + res;
16             indexA--;
17             indexB--;
18         }
19         while(indexA >= 0){
20             let charA = Number(a.charAt(indexA));
21             let tmpRemains = remains;
22             remains = (charA + tmpRemains) >> 1;
23             res = ((charA + tmpRemains) % 2) + res;
24             indexA--;
25         }
26         while(indexB >= 0){
27             let charB = Number(b.charAt(indexB));
28             let tmpRemains = remains;
29             remains = (charB + tmpRemains) >> 1;
30             res = ((charB + tmpRemains) % 2) + res;
31             indexB--;
32         }
33         if(remains > 0){
34             res = '1' + res;
35         }
36         return res;
37     };

 

posted @ 2022-04-07 10:56  BJFU-VTH  阅读(28)  评论(0编辑  收藏  举报