Python 具有复杂度约束的字符串排序列表

Python 具有复杂度约束的字符串排序列表,python,algorithm,time-complexity,computer-science,Python,Algorithm,Time Complexity,Computer Science,我需要对字符串列表进行排序,其中每个字符串的长度为k,每个字符串仅由字符{'a','b','c','d','e'} 我确实有以下限制: 我不能使用任何排序方法,包括python附带的方法 比较两个字符串具有复杂性O(k) 排序不到位,需要返回新的排序列表 空间复杂度为O(k)[w/O考虑长度n]的返回列表 时间复杂度是O(n*k*(5^k)) 函数接收要排序的列表和列表中每个字符串的长度。我有两种方法string\u to\u int(),int\u to\u string(),它们将长度k的字

我需要对字符串列表进行排序,其中每个字符串的长度为
k
,每个字符串仅由字符
{'a','b','c','d','e'}

我确实有以下限制:

  • 我不能使用任何排序方法,包括python附带的方法
  • 比较两个字符串具有复杂性
    O(k)
  • 排序不到位,需要返回新的排序列表
  • 空间复杂度为
    O(k)
    [w/O考虑长度
    n
    ]的返回列表
  • 时间复杂度是O(n*k*(5^k))
  • 函数接收要排序的列表和列表中每个字符串的长度。我有两种方法
    string\u to\u int(),int\u to\u string()
    ,它们将长度
    k
    的字符串转换为
    [0,5^k)
    范围内的数字,反之亦然,这些方法都是双射。每种方法的时间复杂度都是
    O(k)

    我最好的尝试是:

    def sort_strings(lst, k):
      int_lst = []
      for item in lst:
          int_lst.append(string_to_int(item))
      sorted_lst = []
      for i in range(5**k):
          if i in int_lst:
              sorted_lst.append(int_to_string(k, i))
    
      return sorted_lst 
    
    但是在这里我创建了
    int\u lst
    ,它的空间复杂度是
    O(n)
    ,而不是
    O(k)
    。 有没有关于如何实现这一点的提示?

    您有一个很长的时间限制。这足够时间按顺序检查每个可能的长度为k的字符串,并将这些字符串与输入列表中的每个字符串进行比较


    你能用它做什么?

    试着重用
    int\u list
    作为输出,如下所示

        replace = 0
    
        for i in range(5 ** k):
            if i in int_list[replace:]:
                int_list[replace] = int_to_string(i, k)
                replace += 1
    
        return int_list
    

    <>编辑:在输入列表中包含重复的情况下,请考虑<代码>,当我在国际列表中[替换]:< /代码>而不是<代码>,如果……/代码> ./p>,那么,遍历范围>代码>中的所有可能的数字。[0,5**k),对于每次迭代,在
    lst
    上迭代,并比较
    lst
    中字符串的int值,每个等于当前数字的值都将被添加到列表中。这似乎是可行的!谢谢:)我已经考虑过了,但就地更改将消除重复字符串,并且可以达到在将所有整数转换为字符串之前结束范围,从而返回一个列表,该列表的开头包含一些已排序的字符串,以及一些未转换的整数