• 【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]
  • 相关阅读:
    Java标签实现分页
    Servlet过滤器介绍之原理分析
    java超强分页标签演示
    Mybatis中resultMap与resultType区别
    洛谷 P1002 过河卒
    洛谷 P2181 对角线
    ACM常数优化
    2020 年百度之星&#183;程序设计大赛
    AtCoder Beginner Contest 171 E
    AtCoder Beginner Contest 171 D
  • 原文地址:https://www.cnblogs.com/seyjs/p/14793519.html
Copyright © 2020-2023  润新知