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 };