1404. Number of Steps to Reduce a Number in Binary Representation to One - cocoder39/coco39_LC GitHub Wiki
class Solution:
def numSteps(self, s: str) -> int:
res = 0
carry = 0
n = len(s)
for i in range(n-1, 0, -1):
d = int(s[i]) + carry
if d == 1:
carry = 1
res += 2
elif d == 2:
carry = 1
res += 1
elif d == 0:
carry = 0
res += 1
# s[0] has to be 1
# if s[0] + carry == 1 -> carry = 0 and res += 0
# if s[0] + carry == 2 -> carry = 1 and res += 1
return res + carry
simplified version
class Solution:
def numSteps(self, s: str) -> int:
res = 0
carry = 0
n = len(s)
for i in range(n-1, 0, -1):
d = int(s[i]) + carry
if d == 1:
carry = 1
res += 2
else:
res += 1
# s[0] has to be 1
# if s[0] + carry == 1 -> carry = 0 and res += 0
# if s[0] + carry == 2 -> carry = 1 and res += 1
return res + carry