• 【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
  • 相关阅读:
    批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor
    微软压力测试工具 web application stress
    使用Microsoft Web Application Stress Tool对web进行压力测试
    数据库
    字体转换方法整理
    C# 开源框架
    IP、操作系统、移动OS
    互联网上的业务
    三元组与序列化
    TCP/IP协议(数据封装与拆装过程)
  • 原文地址:https://www.cnblogs.com/seyjs/p/12940143.html
Copyright © 2020-2023  润新知