1
impl Solution {
2
pub fn word_subsets(a: Vec<String>, b: Vec<String>) -> Vec<String> {
3
let count = |s: &str| {
4
let mut m = [0; 26];
5
s.chars().for_each(|c| m[c as usize - 'a' as usize] += 1);
6
m
7
};
8
let b_counts = b.iter().map(|s| count(s)).fold([0; 26], |mut bm, m| {
9
m.iter()
10
.enumerate()
11
.for_each(|(i, &n)| bm[i] = bm[i].max(n));
12
bm
13
});
14

15
a.into_iter()
16
.map(|w| (count(&w), w))
17
.filter(|(m, _)| b_counts.iter().enumerate().all(|(i, &n)| m[i] >= n))
18
.map(|(_, w)| w)
19
.collect()
20
}
21
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0