在Python中找到满足给定条件的字典序最小的字符串

假设我们有一个由 n 个数字组成的数组 A,其中 A[i] 表示字符串 s 的长度为 (i + 1) 的前缀中不同字符的数量,我们必须找到满足给定前缀数组的字典序最小的字符串. 所有字符都是小写英文字母 [az]。如果没有这样的字符串,则返回 -1。

所以,如果输入像 A = [1,1,2,3,4],那么输出将是 aabcd 因为 prefix[0] 有 1 个不同的字符,prefix[1] 有 1 个不同的字符,prefix[2]有 2 个不同的字符,prefix[3] 有 3 个不同的字符,prefix[4] 有 4 个不同的字符,并且字符串最小。

在线示例

让我们看看以下实现以获得更好的理解 -

def get_smallest_string(A):
   n = len(A)
   character = 'a'
   string = ""
   if (n < 1 or A[0] != 1):
      return -1
   string += str(character)
   character = chr(ord(character) + 1)
   for i in range(1, n):
      difference = A[i] - A[i - 1]
      if (difference > 1 or difference < 0 or A[i] > 26):
         return -1
      elif (difference == 0):
         string += 'a'
      else:
         string += character
         character = chr(ord(character) + 1)
return string

A = [1, 1, 2, 3, 4]
print(get_smallest_string(A))

输入

[1, 1, 2, 3, 4]
输出结果
aabcd

猜你喜欢