diff --git a/go/number-of-steps-to-reduce-a-number-in-binary-representation-to-one.go b/go/number-of-steps-to-reduce-a-number-in-binary-representation-to-one.go new file mode 100644 index 0000000..29fac25 --- /dev/null +++ b/go/number-of-steps-to-reduce-a-number-in-binary-representation-to-one.go @@ -0,0 +1,18 @@ +package number_of_steps_to_reduce_a_number_in_binary_representation_to_one + +func numSteps(s string) int { + steps := 0 + carry := 0 + for i := len(s) - 1; i > 0; i-- { + bit := int(s[i]) + carry + + if bit%2 == 1 { + steps += 2 + carry = 1 + } else { + steps += 1 + } + } + + return steps + carry +}