26 lines
492 B
Go
26 lines
492 B
Go
// Package q1404 implements a solution for https://leetcode.com/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/
|
|
package q1404
|
|
|
|
func numSteps(s string) int {
|
|
steps := 0
|
|
carry := false
|
|
for i := len(s) - 1; i > 0; i-- {
|
|
switch {
|
|
case !carry && s[i] == '0':
|
|
steps++
|
|
case !carry && s[i] == '1':
|
|
steps += 2
|
|
carry = true
|
|
case carry && s[i] == '0':
|
|
steps += 2
|
|
default:
|
|
steps++
|
|
}
|
|
}
|
|
if carry {
|
|
steps++
|
|
}
|
|
return steps
|
|
}
|
|
|
|
var _ = numSteps
|