zoukankan      html  css  js  c++  java
  • 【leetcode】1545. Find Kth Bit in Nth Binary String

    题目如下:

    Given two positive integers n and k, the binary string  Sn is formed as follows:

    • S1 = "0"
    • Si = Si-1 + "1" + reverse(invert(Si-1)) for i > 1

    Where + denotes the concatenation operation, reverse(x) returns the reversed string x, and invert(x) inverts all the bits in x (0 changes to 1 and 1 changes to 0).

    For example, the first 4 strings in the above sequence are:

    • S1 = "0"
    • S2 = "011"
    • S3 = "0111001"
    • S4 = "011100110110001"

    Return the kth bit in Sn. It is guaranteed that k is valid for the given n.

    Example 1:

    Input: n = 3, k = 1
    Output: "0"
    Explanation: S3 is "0111001". The first bit is "0".
    

    Example 2:

    Input: n = 4, k = 11
    Output: "1"
    Explanation: S4 is "011100110110001". The 11th bit is "1".
    

    Example 3:

    Input: n = 1, k = 1
    Output: "0"
    

    Example 4:

    Input: n = 2, k = 3
    Output: "1"

    Constraints:

    • 1 <= n <= 20
    • 1 <= k <= 2n - 1

    解题思路:n最大才20,先把Sn算出来即可。

    代码如下:

    class Solution(object):
        def findKthBit(self, n, k):
            """
            :type n: int
            :type k: int
            :rtype: str
            """
            bs = '0'
    
            def reverse_invert(input):
                output = ''
                for i in input:
                    output += '1' if i == '0' else '0'
                return output[::-1]
    
            for i in range(1,n+1):
                bs = bs + '1' + reverse_invert(bs)
            return bs[k-1]
  • 相关阅读:
    服务的有状态和无状态
    微服务-服务治理
    微服务-服务注册与发现
    微服务-技术的选型
    微服务的数据一致性
    微服务的服务拆分
    初识微服务
    REST API风格
    算法
    JS 判断PC、android、ios、微信浏览器
  • 原文地址:https://www.cnblogs.com/seyjs/p/14793519.html
Copyright © 2011-2022 走看看