• 【leetcode】1404. Number of Steps to Reduce a Number in Binary Representation to One


    题目如下:

    Given a number s in their binary representation. Return the number of steps to reduce it to 1 under the following rules:

    • If the current number is even, you have to divide it by 2.

    • If the current number is odd, you have to add 1 to it.

    It's guaranteed that you can always reach to one for all testcases.

    Example 1:

    Input: s = "1101"
    Output: 6
    Explanation: "1101" corressponds to number 13 in their decimal representation.
    Step 1) 13 is odd, add 1 and obtain 14. 
    Step 2) 14 is even, divide by 2 and obtain 7.
    Step 3) 7 is odd, add 1 and obtain 8.
    Step 4) 8 is even, divide by 2 and obtain 4.  
    Step 5) 4 is even, divide by 2 and obtain 2. 
    Step 6) 2 is even, divide by 2 and obtain 1.  
    

    Example 2:

    Input: s = "10"
    Output: 1
    Explanation: "10" corressponds to number 2 in their decimal representation.
    Step 1) 2 is even, divide by 2 and obtain 1.  
    

    Example 3:

    Input: s = "1"
    Output: 0

    Constraints:

    • 1 <= s.length <= 500
    • s consists of characters '0' or '1'
    • s[0] == '1'

    解题思路:依次判断s的最后一位。如果是0,表示为偶数,去掉最后的0即可;如果是1,表示为奇数,做加法操作。

    代码如下:

    class Solution(object):
        def numSteps(self, s):
            """
            :type s: str
            :rtype: int
            """
            res = 0
            l = list(s)
            while len(l) > 1:
                v = l.pop(-1)
                res += 1
                if int(v) == 0:
                    continue
                else:
                    l.append('0')
                    for i in range(len(l)-2,-1,-1):
                        if l[i] == '0':
                            l[i] = '1'
                            break
                        else: l[i] = '0'
                    if l[0] == '0':l = ['1'] + l
    
            return res
  • 相关阅读:
    vue-生命周期图示 注解
    vue-组件嵌套之——父组件向子组件传值
    vue-框架模板的源代码注释
    vue-小demo、小效果 合集(更新中...)
    Gulp-自动化编译sass和pug文件
    JS
    Node.js- sublime搭建node的编译环境
    sublime--package control的配置与插件安装
    git-常用命令一览表
    java面试题:jvm
  • 原文地址:https://www.cnblogs.com/seyjs/p/12940143.html
Copyright © 2020-2023  润新知