← All problems

2429. Minimize Xor

MediumOpen on LeetCodeProblem statement

Problem Statement

2429. Minimize XOR

Medium


Given two positive integers num1 and num2, find the positive integer x such that:

Note that XOR is the bitwise XOR operation.

Return the integer x. The test cases are generated such that x is uniquely determined.

The number of set bits of an integer is the number of 1's in its binary representation.

 

Example 1:

Input: num1 = 3, num2 = 5
Output: 3
Explanation:
The binary representations of num1 and num2 are 0011 and 0101, respectively.
The integer 3 has the same number of set bits as num2, and the value 3 XOR 3 = 0 is minimal.

Example 2:

Input: num1 = 1, num2 = 12
Output: 3
Explanation:
The binary representations of num1 and num2 are 0001 and 1100, respectively.
The integer 3 has the same number of set bits as num2, and the value 3 XOR 1 = 2 is minimal.

 

Constraints:

Java

Source file
class Solution {
    public int minimizeXor(int num1, int num2) {
        int n = num1, srcBitCt = Integer.bitCount(num1), tgtBitCt = Integer.bitCount(num2);
        for(int i=0; srcBitCt<tgtBitCt; i++){
            if(isSet(n, i))
                continue;
            n = setBit(n, i);
            srcBitCt++;
        }
        for(int i=0; srcBitCt>tgtBitCt; i++){
            if(!isSet(n, i))
                continue;
            n = unsetBit(n, i);
            srcBitCt--;
        }
        return n;
    }
    private boolean isSet(int x, int posn){
        return ((x >> posn) & 1) == 1;
    }
    private int setBit(int x, int posn){
        return x | 1 << posn;
    }
    private int unsetBit(int x, int posn){
        return ~(1 << posn) & x;
    }
}