使用 Python 在第 n 个二进制字符串中查找第 K 位的程序
假设我们有两个正值n和k,现在我们可以使用以下规则创建一个二进制字符串S_n-
S_1=0
S_i=S_i-1concatenate"1"concatenatereverse(invert(S_i-1))fori>1
这里reverse(x)返回反转的字符串x,并invert(x)翻转x中的所有位。
这些是四个这样的字符串的例子
S_1="0"
S_2="011"
S_3="0111001"
S_4="011100110110001"
我们必须在S_n中找到第k位。
因此,如果输入类似于n=4k=10,那么输出将为1,因为S_4="011100110110001",因此第10位为1(第一位位于位置1)。
为了解决这个问题,我们将按照以下步骤操作-
如果k等于1,则
以字符串形式返回0
否则,
templast:=arr的副本
temp2last:=arr2的副本
arr:=templast连接1连接temp2last
arr2:=templast连接0连接temp2last
arr:=单个元素为0的数组
arr2:=具有单个元素1的数组
而k>arr的大小,做
从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