程序在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

    回到顶部