删除列以在Python中进行排序

假设我们有一个由N个小写字母字符串组成的数组,该数组的名称为A,所有字符串的长度相同。现在,我们可以选择任何一组删除索引,并且对于每个字符串,我们都删除这些索引中的所有字符。

例如,如果我们有一个数组A,例如[“ abcdef”,“ uvwxyz”],删除索引是{0,2,3},那么删除后的最终数组将是[“ bef”,“ vyz”], A的其余列为[“ b”,“ v”],[“ e”,“ y”]和[“ f”,“ z”]。

假设我们选择了一组删除索引D,就像删除后一样,A中的每个其余列都以非降序排列。我们必须找到D长度的最小可能值。

因此,如果输入类似于[“ cba”,“ daf”,“ ghi”],则输出将为1,这是因为在选择D = {1}之后,则每列[“ c”,“ d” ,“ g”]和[“ a”,“ f”,“ i”]的顺序不减。如果我们选择D = {},则列[“ b”,“ a”,“ h”]的排序顺序将不会减少。

为了解决这个问题,我们将遵循以下步骤-

  • A =通过从数组中提取字符串来构成矩阵,并将字符分成不同的列

  • B =新的空列表

  • 对于A中的col

    • 如果col已经排序,则将0插入B

    • 否则将1插入B

  • 返回B中所有元素的总和

让我们看下面的实现以更好地理解-

示例

class Solution:
   def minDeletionSize(self, A):
      return sum([1-(sorted(col)==list(col)) for col in zip(*A)])
ob = Solution()print(ob.minDeletionSize(["cba","daf","ghi"]))

输入值

["cba","daf","ghi"]

输出结果

1