We are given an array AofNlowercase letter strings, all of the same length.

Now, we may choose any set of deletion indices, and for each string, we delete all the characters in those indices.

For example, if we have an arrayA = ["abcdef","uvwxyz"]and deletion indices{0, 2, 3}, then the final array after deletions is["bef", "vyz"], and the remaining columns ofAare ["b","v"],["e","y"], and["f","z"]. (Formally, thec-th column is[A[0][c], A[1][c], ..., A[A.length-1][c]].)

Suppose we chose a set of deletion indicesDsuch that after deletions, each remaining column in A is in non-decreasing sorted order.

Return the minimum possible value ofD.length.

Example 1:

Input: ["cba","daf","ghi"]
Output: 1
Explanation: 
After choosing D = {1}, each column ["c","d","g"] and ["a","f","i"] are in non-decreasing sorted order.
If we chose D = {}, then a column ["b","a","h"] would not be in non-decreasing sorted order.

这道题大概意思是给出一个Character的矩阵,通过删除最少的列,来使得这个矩阵的每一列都是排好序的。没有什么特殊做法,只要某一列的字符不是排好序的,就需要把这一列删除。

class Solution {
    public int minDeletionSize(String[] A) {
        if(A == null || A.length == 0)
            return 0;

        int res = 0;
        int n = A[0].length();

        for(int i = 0; i < n; i++) {
            int j = 0;
            for(; j < A.length - 1; j++) {
                if(A[j].charAt(i) > A[j + 1].charAt(i)) {
                    break;
                }
            }

            if(j != A.length - 1)
                res++;
        }

        return res;
    }
}

results matching ""

    No results matching ""