给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等。
你需要选出一组要删掉的列 D,对 A 执行删除操作,使 A 中剩余的每一列都是 非降序 排列的,然后请你返回 D.length 的最小可能值。
删除 操作的定义是:选出一组要删掉的列,删去 A 中对应列中的所有字符,形式上,第 n 列为 [A[0][n], A[1][n], …, A[A.length-1][n]])。(可以参见 删除操作范例)
提示:
- 1 <= A.length <= 100
- 1 <= A[i].length <= 1000
删除操作范例:
比如,有 A = [“abcdef”, “uvwxyz”],
要删掉的列为 {0, 2, 3},删除后 A 为[“bef”, “vyz”], A 的列分别为[“b”,“v”], [“e”,“y”], [“f”,“z”]。
class Solution {
public int minDeletionSize(String[] A) {
if (A == null || A.length == 0) return 0;
if (A[0].length() <= 1) return 0;
//字符串的长度
int len = A[0].length();
int count = 0;
//遍历字符串的每一个字符
for (int i = 0; i < len; i++) {
//比较A数组的每个元素的同个字符,当前字符减去下一个元素的同个字符,大于0(说明不是升序,count加1,直接进入下个字符的比较)
for (int j = 0; j < A.length - 1; j++) {
if (A[j].charAt(i) - A[j + 1].charAt(i) > 0) {
count++;
break;
}
}
}
return count;
}
}