程序在python中找到第k个最小n长度的字典上最小的字符串
假设我们有一个数字n和另一个值k。现在让我们考虑一个仅包含“ 0”,“ 1”和“ 2”的字符串,其中不连续重复字符。我们必须选择长度为n的此类字符串,并找到第k个按字典顺序最小的字符串。如果没有第k个字符串,则返回空字符串。
因此,如果输入类似于n = 4 k = 2,则输出将为“ 0120”。
为了解决这个问题,我们将按照以下步骤操作:
定义一个
solve()
将采用s,k和last的方法如果s与0相同,则
返回空白字符串
对于“ 012”中的每个字符c,执行
返回c + solve(s-1,k,c)
进行下一次迭代
如果c与最后一个相同,则
如果k <2 ^(s-1),则
k:= k-2 ^(s-1)
返回空白字符串
从主要方法中调用solve(n,k,Null)
让我们看下面的实现以更好地理解:
范例程式码
class Solution:def solve(self, s, k, last=None):
if s == 0:
return ""
for c in "012":
if c == last:
continue
if k < 2 ** (s - 1):
return c + self.solve(s - 1, k, c)
k -= 2 ** (s - 1)
return ""
ob = Solution()n = 4
k = 2
print(ob.solve(n, k))
输入值
4, 2
输出结果
0120
以上是 程序在python中找到第k个最小n长度的字典上最小的字符串 的全部内容, 来源链接: utcz.com/z/357493.html