给定由 N
个小写字母字符串组成的数组 A
,其中每个字符串长度相等。
选取一个删除索引序列,对于 A
中的每个字符串,删除对应每个索引处的字符。
假设,我们选择了一组删除索引 D
,那么在执行删除操作之后,最终得到的数组的行中的每个元素都是按字典序排列的。
比如,有 A = ["babca","bbazb"]
,删除索引序列 {0, 1, 4}
,删除后 A
为["bc","az"]
。
清楚起见,A[0]
是按字典序排列的(即,A[0][0] <= A[0][1] <= ... <= A[0][A[0].length - 1]
),A[1]
是按字典序排列的(即,A[1][0] <= A[1][1] <= ... <= A[1][A[1].length - 1]
),依此类推。
请你返回 D.length
的最小可能值。
def mindeletionsize(A):
n=len(A)
m=len(A[0])
f=[0 for i in range(120)]
maxd=-1
for i in range(0,m):
f[i]=1
for j in range(0,i):###判断第i个字母前是否都比第i个小
if smaller(j,i,A,n)
print(f[i],f[j],' ',end='')
f[i]=max(f[i],f[j]+1)
print(f[i])
maxd=max(maxd,f[i])
return m-maxd
def smaller(i,j,A,n):
for k in range(n):#将A数组中每一个元素中前一个字母和后一个字母相比较
if A[k][i]>A[k][j]:#如果前面的字母要大,则返回false
return False
return True
# A=['edcba']
A=['babca','bbazb']
# A=['ghi','def','abc']
index=mindeletionsize(A)
print(index)