0944.删除列以使之有序
描述
给出由 N
个小写字母串组成的数组 A
,所有小写字母串的长度都相同。
现在,我们可以选择任何一组删除索引,对于每个字符串,我们将删除这些索引中的所有字符。
举个例子,如果字符串为 "``abcdef``"
,且删除索引是 {0, 2, 3}
,那么删除之后的最终字符串为 "``bef``"
。
假设我们选择了一组删除索引 D
,在执行删除操作之后,A
中剩余的每一列都是有序的。
形式上,第 c
列为 [A[0][c], A[1][c], ..., A[A.length-1][c]]
返回 D.length
的最小可能值。
实例
输入:["cba","daf","ghi"]
输出:1
输入:["a","b"]
输出:0
输入:["zyx","wvu","tsr"]
输出:3
提示
1 <= A.length <= 100
1 <= A[i].length <= 1000
题解
- 这里的有序特指增序
- 允许非严格递增
- 坑爹的题目…真没意思厚
- 两次循环,第一个循环检查列,第二个循环检查列内情况
public static int minDeletionSize(String[] A) {
int strLength = A[0].length();
int aLength = A.length;
int counter = 0;
if (aLength <= 1)
return 0;
for (int i=0;i<strLength;i++){
char c1 = A[0].charAt(i);
char c2;// = A[1].charAt(i);
for (int j = 0; j < aLength-1; j++) {
c2 = c1;
c1 = A[j+1].charAt(i);
if (c1 <= c2){
counter++;
break;
}
}
}
return counter;
}