使用Python找到第n个二进制字符串中的第k位的程序

使用Python找到第n个二进制字符串中的第k位的程序

假设我们有两个正数n和k,现在我们可以通过以下规则创建一个二进制字符串S_n-

  • S_1 = 0

  • 对于i>1,S_i = S_i-1 concatenate “1” concatenate reverse(invert(S_i-1))

这里的reverse(x)返回反转的字符串x,而invert(x)翻转x中的所有位。

以下是四个这样的字符串的例子

  • S_1 = “0”

  • S_2 = “011”

  • S_3 = “0111001”

  • S_4 = “011100110110001”

我们必须找到S_n中的第k位。

因此,如果输入是n = 4 k = 10,则输出将为1,因为S_4 =“011100110110001”,因此第10位为1(第一位位于1的位置)。

要解决此问题,我们将遵循以下步骤-

  • 如果k与1相同,则
    • 返回0作为字符串
  • 否则,
    • arr:其元素为0的数组

    • arr2:其元素为1的数组

    • while k > arr的大小,do

      • templast:arr的副本

      • temp2last:arr2的副本

      • arr:templast concatenate 1 concatenate temp2last

      • arr2:templast concatenate 0 concatenate temp2last

  • 从arr返回第k-1个元素

让我们看下面的实现以更好地理解-

实例

def solve(n, k):
   if k == 1:
      return(str(0))
   else:
      arr = [0]
      arr2 = [1]
      while k > len(arr):
         templast = arr.copy()
         temp2last = arr2.copy()
         arr = templast + [1] + temp2last
         arr2 = templast + [0] + temp2last
      return(str(arr[k-1]))
n = 4
k = 10
print(solve(n, k))

输入

4, 10

输出

1

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程