Post

981 Delete Columns To Make Sorted

981 Delete Columns To Make Sorted

Delete Columns to Make Sorted image

You are given an array of n strings strs, all of the same length.

The strings can be arranged such that there is one on each line, making a grid.

1
For example, strs = ["abc", "bce", "cae"] can be arranged as follows:
1
2
3
4
5
abc
bce
cae

You want to delete the columns that are not sorted lexicographically. In the above example (0-indexed), columns 0 (‘a’, ‘b’, ‘c’) and 2 (‘c’, ‘e’, ‘e’) are sorted, while column 1 (‘b’, ‘c’, ‘a’) is not, so you would delete column 1.

Return the number of columns that you will delete.

 

Example 1:

1
2
3
4
5
6
7
8
9
**Input:** strs = ["cba","daf","ghi"]
**Output:** 1
**Explanation:** The grid looks as follows:
  cba
  daf
  ghi
Columns 0 and 2 are sorted, but column 1 is not, so you only need to delete 1 column.

Example 2:

1
2
3
4
5
6
7
8
**Input:** strs = ["a","b"]
**Output:** 0
**Explanation:** The grid looks as follows:
  a
  b
Column 0 is the only column and is sorted, so you will not delete any columns.

Example 3:

1
2
3
4
5
6
7
8
9
**Input:** strs = ["zyx","wvu","tsr"]
**Output:** 3
**Explanation:** The grid looks as follows:
  zyx
  wvu
  tsr
All 3 columns are not sorted, so you will delete all 3.

 

Constraints:

1
2
3
4
n == strs.length
1 <= n <= 100
1 <= strs[i].length <= 1000
strs[i] consists of lowercase English letters.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

 use itertools::enumerate;

impl Solution {
    pub fn min_deletion_size(strs: Vec<String>) -> i32 {
        let mut arr : Vec<Vec<char>> = Vec::new();

        

        for k in strs {

            for (i, m) in enumerate(k.chars()) {
                if (arr.len()) <= i {
                    print!("here");
                    arr.push(Vec::new());
                }
                arr[i].push(m);
            }
        }
        let mut a = 0;
        for mut m in arr {
            let u = m.clone();
            m.sort();
            if u != m {
                a += 1;
            }
        }
        a

    }
}



This post is licensed under CC BY 4.0 by the author.