在Python中查找第k个最小的n个长度的词典序最小的字符串的程序

在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和last相同,则
      • 进行下一个迭代
    • 如果k < 2 ^(s-1),则
      • 返回c + solve(s – 1,k,c)
    • 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教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程