981 Delete Columns To Make Sorted
981 Delete Columns To Make Sorted
Delete Columns to Make Sorted 
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.