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]
  • 相关阅读:
    usaco-4.1-nuggets-passed
    usaco-3.4-rockers-passed
    usaco-3.4-fence9-passed
    usaco-3.4-heritage-passed
    usaco-3.3-game1-passed
    usaco-3.3-range-passed
    usaco-3.3-camelot-passed
    6.23课堂作业
    初识JVM虚拟机
    JDK安装以及配置环境变量的步骤
  • 原文地址:https://www.cnblogs.com/seyjs/p/14351538.html
Copyright © 2011-2022 走看看