zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    go语言Notepad++简易开发环境搭建(windows)
    openssl AES加密以及padding
    为什么数据库要读写分离
    关于查询服务器文件是否过期的分析
    linux 禁止指定账号ssh登陆
    libmemcached upcoming ISO C++ standard, C++0x
    keepalived安装配置(nginx)
    php连接mysql报错No such file or directory
    linux命令行下使用R语言绘图
    纯真IP数据库导入mysql
  • 原文地址:https://www.cnblogs.com/seyjs/p/12940143.html
Copyright © 2011-2022 走看看