# [LeetCode]#2220. Minimum Bit Flips to Convert Number

--

Environment: Python 3.8

Key technique: XOR, count

A bit flip of a number `x` is choosing a bit in the binary representation of `x` and flipping it from either `0` to `1` or `1` to `0`.

• For example, for `x = 7`, the binary representation is `111` and we may choose any bit (including any leading zeros not shown) and flip it. We can flip the first bit from the right to get `110`, flip the second bit from the right to get `101`, flip the fifth bit from the right (a leading zero) to get `10111`, etc.

Given two integers `start` and `goal`, return the minimum number of bit flips to convert `start` to `goal`.

Example 1:

`Input: start = 10, goal = 7Output: 3Explanation: The binary representation of 10 and 7 are 1010 and 0111 respectively. We can convert 10 to 7 in 3 steps:- Flip the first bit from the right: 1010 -> 1011.- Flip the third bit from the right: 1011 -> 1111.- Flip the fourth bit from the right: 1111 -> 0111.It can be shown we cannot convert 10 to 7 in less than 3 steps. Hence, we return 3.`

Analysis:

1. Use XOR to get output.
2. Sum all ‘1’

Solution:

`class Solution:    def minBitFlips(self, start, goal):        return bin(start ^ goal).count('1')`

Submissions:

Reference:

https://leetcode.com/problems/minimum-bit-flips-to-convert-number/discuss/1907288/Python-Solution-or-One-liner

--

--