3
public List<Integer> findNumOfValidWords(String[] words, String[] puzzles) {5
Map<Integer, Integer> map = new HashMap<>();7
for (String w : words) {9
for (int i = 0; i < w.length(); i++) {10
mask |= 1 << (w.charAt(i) - 'a');12
map.put(mask, map.getOrDefault(mask, 0) + 1);15
List<Integer> res = new ArrayList<>();17
for (String p : puzzles) {19
for (int i = 0; i < p.length(); i++) {20
mask |= 1 << (p.charAt(i) - 'a');24
int first = 1 << (p.charAt(0) - 'a');26
if ((sub & first) == first && map.containsKey(sub)) {32
sub = (sub - 1) & mask; // get the next substring