Minimum Flips to Make a OR b Equal to c

Problem Description

Given 3 positives numbers a, b and c. Return the minimum flips required in some bits of a and b to make ( a OR b == c ). (bitwise OR operation).
Flip operation consists of change any single bit 1 to 0 or change the bit 0 to 1 in their binary representation.

 

Example 1:

Input: a = 2, b = 6, c = 5
Output: 3
Explanation: After flips a = 1 , b = 4 , c = 5 such that (a OR b == c)

Example 2:

Input: a = 4, b = 2, c = 7
Output: 1

Example 3:

Input: a = 1, b = 2, c = 3
Output: 0

 

Constraints:

Solution (JavaScript)

/**
 * @param {number} a
 * @param {number} b
 * @param {number} c
 * @return {number}
 */
var minFlips = function(a, b, c) {
    let sa = a.toString(2);
    let sb = b.toString(2);
    let sc = c.toString(2);
    
    const max = Math.max(sa.length, sb.length, sc.length);
    sa = sa.padStart(max, '0');
    sb = sb.padStart(max, '0');
    sc = sc.padStart(max, '0');
    
    let flips = 0;
    for(let i = 0; i < max; i++){
        flips += (Number(sc[i]) ? (1 - (sa[i] | sb[i])) : (Number(sa[i]) + Number(sb[i])));
    }
    
    return flips;
};