Return true if a binary number either contains all zero or all ones on a single flip.(Python)
<p>I got a program where any binary number is considered and with 1 flip of either 0 or 1, if we get all 0s or all 1s, then it returns true else it will return false. </p>

<p>For e.g. 110 on 1 flip of element 0 returns 111 and it is printed as true.
111 is a binary number which on one flip, is printed as false.
Any possible solution of how to solve it?</p>

<p>Looking forward to the best possible solutions. Appreciate if the solution is written using Python.</p>

<p>This is what i had actually done.</p>

<pre><code>def binary(num, length = 4):
    return format(num, '#0{}b'.format(length + 2)).replace('0b', '')
n = binary(125)
n.count('0')
n.count('1')
if (n.count('0') == 1) or (n.count('1') == 1):
    return true
</code></pre>

<p>Actually I had no idea of how to flip it. </p>

<p>Assume that the flip can apply to any bit of the number, you can just count the occurrence of 1 or 0.  If either result returns 1, then the answer is true, otherwise the answer is false:</p>

<pre><code>def one_flip(i):
    # i should be integer, so convert it to string using bin() and get the result excluding the '0b'
    s = bin(i)[2:]
    return s.count('0') == 1 or s.count('1') == 1
</code></pre>

python python-3.x math binary